老铁们,切换为后置摄像头后,
切换的代码
private Camera open() {
Camera camera;
int numCameras = Camera.getNumberOfCameras();
if (numCameras == 0) {
return null;
}
int index = 0;
while (index < numCameras) {
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
Camera.getCameraInfo(index, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
break;
}
index++;
}
if (index < numCameras) {
camera = Camera.open(index);
mCameraId = index;
} else {
camera = Camera.open(0);
mCameraId = 0;
}
return camera;
}
打开摄像头之后,需要把SDK的预览角度加个180度,也就是楼上说的把倒过来的再倒一次就是正向的了。
if (mCamera == null) {
try {
mCamera = open();
} catch (RuntimeException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
if (mCamera == null) {
return;
}
if (mCameraParam == null) {
mCameraParam = mCamera.getParameters();
}
mCameraParam.setPictureFormat(PixelFormat.JPEG);
int degree = displayOrientation(this);
mCamera.setDisplayOrientation(degree);
// 设置后无效,camera.setDisplayOrientation方法有效
mCameraParam.set("rotation", degree);
// 后置摄像头有问题,需要把预览的图像数据再颠倒一次。也就是加180度
mPreviewDegree = degree + 180;