java.lang.RuntimeException: не удается подключиться к службе камеры - PullRequest
9 голосов
/ 31 июля 2011

Я пытался создать приложение, которое могло бы включать и выключать вспышку камеры.Код, который у меня есть, выглядит следующим образом:

Camera flash;
Camera.Parameters params;

flash = Camera.open();
params = flash.getParameters();

params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);        
flash.setParameters(params);

И в манифесте xml:

<permission android:name="android.permission.FLASHLIGHT"  

android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
          android:protectionLevel="normal" />

<permission android:name="android.permission.CAMERA"> </permission>

Каждый раз, когда я запускаю код, приложение вылетает по адресу "flash = Camera.open ();»с этой ошибкой:

java.lang.RuntimeException: не удается подключиться к службе камеры

Что я делаю не так?

Ответы [ 4 ]

33 голосов
/ 30 сентября 2011

Чтобы получить доступ к камере устройства, вы должны объявить разрешение CAMERA в своем манифесте Android следующим образом:

 <uses-permission android:name="android.permission.CAMERA" />
 <uses-feature android:name="android.hardware.camera" />
7 голосов
/ 27 мая 2014

Возможно, вы забыли вызвать выпуск в onDestroy

Например:

@Override
protected void onDestroy() {
    if (mCamera != null) {
        mCamera.release();
    }
    super.onDestroy();
}
2 голосов
/ 14 апреля 2016

Вам необходимо программно добавить разрешение нового запроса на android 6.x.

 private static final int MY_PERMISSIONS_REQUEST_CAMERA = 555;

if (ContextCompat.checkSelfPermission(getActivity(), android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CAMERA);
        } else {
            IntentIntegrator.forSupportFragment(this).initiateScan();
        }

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_CAMERA: {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                IntentIntegrator.forSupportFragment(this).initiateScan();
            } else {
                FragmentHelper.popFragment(getActivity(), null, null);
            }
        }
    }
}
1 голос
/ 20 мая 2014

Обычно эта проблема связана с отсутствующим разрешением на запрос камеры, как уже говорили другие пользователи.

Но просто для регистрации здесь другой причины, если вы пытаетесь открыть камеру с помощью идентификатора камеры, который несуществует, вы получите ту же ошибку

java.lang.RuntimeException: не удается подключиться к службе камеры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...