2016-02-24 2 views
0

У меня есть вопрос только на Asus Nexus 7 2013. Все остальные устройства, в том числе Asus Nexus 7, работают отлично.
Это устройство имеет 2 идентификатора камеры: 0, 1.
Но я не могу открыть камеру, используя оба из них.Asus Nexus 7 2013 camera.open Не удается подключиться к службе камеры

//... 
try { 
    //cameraID: 0 or 1 
    camera = Camera.open(cameraID); 
    //... 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Так что я получаю:

java.lang.RuntimeException: Fail to connect to camera service 
android.hardware.Camera.<init>(Camera.java:495) 
android.hardware.Camera.open(Camera.java:341) 

ответ

0

Проблема была в новой Android 6+ особенность: Запрос разрешения на исполнения.

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 
    if (!permissionRequestInProgress) { 
      permissionRequestInProgress = true; 
       new Handler().post(new Runnable() { 
        @Override 
        public void run() { 
         if (ContextCompat.checkSelfPermission(RootActivity.this, Manifest.permission.CAMERA) 
           != PackageManager.PERMISSION_GRANTED) 
         { 
          ActivityCompat.requestPermissions(RootActivity.this, 
             new String[]{Manifest.permission.CAMERA}, 
             CAMERA_PERMISSION_REQUEST); 
         } else { 
          //we got it 
         } 
       } 
      }); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    switch (requestCode) { 
     case CAMERA_PERMISSION_REQUEST: 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       // permission was granted 
       //we got it 
      } else { 
       // permission denied 
      } 
      permissionRequestInProgress = false; 
      break; 
     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
} 
Смежные вопросы