1

私のビデオ録画アプリはビデオを録画し、バックカメラで動作していますが、フロントカメラを使用してビデオを録画したいと考えています。そのため、ユーザーはカメラを切り替えることができます。ユーザーは、ビデオを録画するカメラを選択できます。最初に、アクティビティがロードされたバックカメラが開いてプレビューが開始されたときに、カメラの切り替えボタンをクリックすると、java.lang.RuntimeException: Fail to connect to camera serviceという例外が発生します。以下は、カメラを切り替えるための私のコードです:

private void initRecorder(Surface surface) throws IOException {

   try{
        if (mCamera != null) {
            mCamera.lock();
            mCamera.unlock();
            mCamera.stopPreview();
            mCamera.setPreviewCallback(null);
            mCamera.release();
            mCamera = null;
            mHolder.addCallback(null);
            mHolder = null;
        }

        mHolder = mSurfaceView.getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        if(cameraToOpen==1){
            mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);

        } else if(cameraToOpen==2){
            mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
        }

        mCamera.lock();
        mCamera.setDisplayOrientation(90); 
        mCamera.setPreviewDisplay(mHolder);
        mCamera.startPreview();
        mCamera.unlock();

    }catch(Exception e){

      }
 }

ユーザーがカメラの切り替えボタンをクリックすると、mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT); 例外が発生します。両方のカメラで作業する方法。

編集:

アクティビティの開始時にフロントカメラを開くと、正常に動作しています。SO i は、最初にそのカメラが選択されている場合にのみ、両方からカメラとレコードの両方を開くことができます。しかし、カメラを切り替えると、カメラサービスに接続できないという例外が発生します。

4

1 に答える 1