二话不说,直接看解决方案(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相机接口进行预览时,大部分的前置摄像头的预览图都没有做镜像处理,因此需要手写处理方案。领导告诉我说,Camera
的Parameters
中除了提供标准的相机参数,还有一系列的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");
设置相应的值即可,然后开启预览就可以看到镜像翻转的预览图了。