一行代码解决Android相机预览镜像的问题

二话不说,直接看解决方案(if语句中的代码):

Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(previewWidth, previewHeight);
if (mCameraId == CameraInfo.CAMERA_FACING_FRONT) {
    //设置镜像效果,支持的值为flip-mode-values=off,flip-v,flip-h,flip-vh;
    parameters.set("preview-flip", "flip-h");
}
mCamera.setParameters(parameters);

如上,parameters.set("preview-flip", "flip-h");就是解决镜像问题的关键代码。

在使用android相机接口进行预览时,大部分的前置摄像头的预览图都没有做镜像处理,因此需要手写处理方案。领导告诉我说,CameraParameters中除了提供标准的相机参数,还有一系列的key-value参数来控制相机,我们可以通过以下方式获取相机所支持的所有参数:

//查看相机参数,因为参数很多,所有要存储到文件中查看
String param = parameters.flatten();
sharedPreference.edit().putString("CameraParameters", param).commit();

然后我们查看SP文件中的数据,会看到flip-mode-values=off,flip-v,flip-h,flip-vh;preview-flip=off;这两块内容,其中flip-mode-values规定了翻转(镜像)模式的取值只能为off(关闭),flip-v(竖直翻转),flip-h(水平翻转),flip-vh(竖直+水平翻转),我们根据自己的需要,通过parameters.set("preview-flip", "flip-h");设置相应的值即可,然后开启预览就可以看到镜像翻转的预览图了。

你可能感兴趣的:(开发笔记)