0

だから私はcamera2 APIを使用していて、カメラを開くと:

          private void StartUpCam() 
      {
          CameraManager CM = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
          if(camId.compareTo("")!=0)
          {
              //Log.e("camera", "started");
              try{
                  Log.e("Start up Cam and camId:", camId);
                  CM.openCamera(camId, CDcallback, null);
              }
              catch(CameraAccessException e)
              {
                  Log.e("come with me", "if you want to live");
                  e.printStackTrace();
              }
          }
      }

ご覧のとおり、カメラを開くために必要なパラメータがすべてチェックアウトされていることを確認します。とにかく、コールバックがヒットしたとき:

           private CameraDevice CD;
      private CameraDevice.StateCallback CDcallback
        = new CameraDevice.StateCallback() {

            @Override
            public void onOpened(CameraDevice camera) {
                //Log.e("onOpened", "here");
                CD = camera;
                if(CD == null)
                    Log.e("onOpened", "CD is null");
                createCamPreviewSession();
            }

            @Override
            public void onError(CameraDevice camera, int error) {
                camera.close();
                CD = null;
            }

            @Override
            public void onDisconnected(CameraDevice camera) {
                camera.close();
                CD = null;
            }
        };

onOpened メソッドの Camera Device は常に null です。なぜこれが起こっているのか分かりません。何か案は?

4

2 に答える 2

0

camera2apiコードをプロジェクトに統合する場合はhardwareAccelerated=true、そのアクティビティをマニフェストに追加してください。それが動作します。私の場合、それは機能しています。

<Application
    android:hardwareAccelerated="true"
于 2020-09-12T15:07:16.863 に答える