camera2 android camara回调摄像头设备为空

时间:2015-11-11 01:52:57

标签: android callback android-camera camera2

所以我使用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。我不知道为什么会这样。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你是否尝试过github的camera2basic?

https://github.com/googlesamples/android-Camera2Basic

我曾尝试从那里和android开发者android.hardware.camera2参考研究camera2。但这太令人困惑了。我正在使用android studio 2,gradle 2.8和nexus lg 5x android 6。

我将源代码复制到我的项目中,检查IDE上的所有错误并发现没有错误。在我的nexus上尝试之后,我总是在调用CameraDevice类的每一行上得到相同的错误。它在该类上说空指针。

然后,我在这里找到了这个问题Android Camera2 Sample 事实证明那个人已经用方法尝试过了:

  1. 文件>新>导入样本..
  2. 选择Camera2Basic示例。
  3. 将您的gradle更新为2.10版 怎么样?
  4. 文件>项目结构......>在左侧选项卡上单击项目> gradle
  5. 将Gradle版本更改为2.10
  6. 然后我将代码运行到我的Nexus 5X And​​roid 6,它运行得非常好。它有摄像头预览,它首先会询问权限,它可以将图片保存到存储器等。

答案 1 :(得分:0)

如果要将camera2api代码集成到项目中,请在清单中添加hardwareAccelerated=true并添加该活动。会的。就我而言,它正在工作。

<Application
    android:hardwareAccelerated="true"