如何通过 GLSurfaceView 在 Android 中切换 front/back 相机?
How to switch front/back camera in Android by GLSurfaceView?
发了一个issue to grafika,不过现在好像没人维护了
我想用GLSurfaceView实现的CameraCaptureActivity
切换front/back摄像头,如下:
public boolean switchCamera() {
releaseCamera();
mGLView.onPause();
if (mReqCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) {
mReqCameraId = Camera.CameraInfo.CAMERA_FACING_FRONT;
} else {
mReqCameraId = Camera.CameraInfo.CAMERA_FACING_BACK;
}
openCamera(mReqCameraId);
mGLView.onResume();
mGLView.queueEvent(new Runnable() {
@Override
public void run() {
mRenderer.setCameraPreviewSize(mCameraPreviewWidth, mCameraPreviewHeight);
}
});
return true;
}
可以用,但是我回到第一次启动的相机时,FOV已经改变了。框架好像被剪掉了
所以切换前后摄像头时我错过了哪里?
谢谢。
PS:我已经用谷歌搜索了,但是关于 Android 带有 GLSurfaceView 的相机的信息很少。
作为@fadden 的评论,我删除了 setRecordingHint(true)
,它工作正常。
发了一个issue to grafika,不过现在好像没人维护了
我想用GLSurfaceView实现的CameraCaptureActivity
切换front/back摄像头,如下:
public boolean switchCamera() {
releaseCamera();
mGLView.onPause();
if (mReqCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) {
mReqCameraId = Camera.CameraInfo.CAMERA_FACING_FRONT;
} else {
mReqCameraId = Camera.CameraInfo.CAMERA_FACING_BACK;
}
openCamera(mReqCameraId);
mGLView.onResume();
mGLView.queueEvent(new Runnable() {
@Override
public void run() {
mRenderer.setCameraPreviewSize(mCameraPreviewWidth, mCameraPreviewHeight);
}
});
return true;
}
可以用,但是我回到第一次启动的相机时,FOV已经改变了。框架好像被剪掉了
所以切换前后摄像头时我错过了哪里?
谢谢。
PS:我已经用谷歌搜索了,但是关于 Android 带有 GLSurfaceView 的相机的信息很少。
作为@fadden 的评论,我删除了 setRecordingHint(true)
,它工作正常。