2015-11-11 1 views
0

Так я использую Camera2 API, и когда я открываю камеру:Camera2 андроид Камара обратного вызова камеры устройство является нулевым

  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 всегда равно null. Я понятия не имею, почему это происходит. Есть идеи?

ответ

1

Вы пробовали камеру2basic от github?

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

Я пытался изучать Camera2 оттуда и от андроида ссылки разработчика android.hardware.camera2. Но это смущает. Я использую android studio 2, gradle 2.8 и nexus lg 5x android 6.

Я скопировал исходные коды в свой проект, проверил все ошибки на IDE и не обнаружил ошибок. После того, как я попробовал это на своей связи, я всегда получаю те же ошибки в каждой строке, которая вызывает класс CameraDevice. Он указывает нулевой указатель на этот класс.

Тогда я нашел этот вопрос здесь Android Camera2 Sample и оказывается, парень с просьбой уже пробовали его с помощью метода:

  1. File> New> Import Sample ..
  2. Pick образец Camera2Basic.
  3. Обновить вашу градулу до версии 2.10 КАК?
  4. Файл> Структура проекта ...> по щелчку проекта левой вкладки> Gradle
  5. Изменить версию Gradle 2.10

Затем я запускаю код на Nexus 5X Android 6, и она работает очень хорошо. Он имеет предварительный просмотр камеры. Сначала он будет запрашивать разрешения, он может сохранять изображение на хранение и т. Д.

Смежные вопросы