Невозможно предоставить разрешение камеры в Android Things

Я использую плату Raspberry PI3 для запуска Android Things dev-preview 0.5.0. К доске прикреплена камера. Чтобы вручную предоставить разрешение на камеру, я запускаю следующую команду в терминале:

adb shell pmgrant org.tensorflow.demo android.permission.CAMERA

Однако в ответ я получаю следующую ошибку:

Операция запрещена: java.lang.SecurityException: невозможно предоставить системное фиксированное разрешение android.permission.CAMERA для пакета org.tensorflow.demo

Приложение работает успешно, но не захватывает изображение.


person Shubham Shekhar    schedule 27.11.2017    source источник
comment
выключение и повторное включение вашего пи также даст разрешение (во время загрузки)   -  person Blundell    schedule 27.11.2017
comment
выключение и включение пи не помогло. Проблема не устранена.   -  person Shubham Shekhar    schedule 08.01.2018
comment
обновить до АТ 0.6.1   -  person Blundell    schedule 08.01.2018


Ответы (3)


Перезагрузка RPi мне не помогла. Я обнаружил, что предоставление разрешения вручную решило проблему доступа:

adb shell pm grant <your.package.name> android.permission.CAMERA

См. эту публикацию на Github.

person Roy Hinkley    schedule 04.06.2018

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

Полный код: https://github.com/hpsaturn/bgcamera

Манифест

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

Проверить разрешение:

    // We need permission to access the camera
    if (checkSelfPermission(Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED) {
        // A problem occurred auto-granting the permission
        Log.d(TAG, "No permission");
        return;
    }

Инициировать камеру

/**
 * Starts a builtin camera with api camera 2
 */
private void startCamera() {
    CameraManager manager = (CameraManager) ctx.getSystemService(Context.CAMERA_SERVICE);
    try {
        String pickedCamera = getCamera(manager);
        manager.openCamera(pickedCamera, cameraStateCallback, null);
        mImageReader = ImageReader.newInstance(mWidth, mHeight, ImageFormat.YUV_420_888, 4 /* images buffered */);
        mImageReader.setOnImageAvailableListener(onImageAvailableListener, null);
        Log.d(TAG, "imageReader created");
    } catch (CameraAccessException e) {
        Log.e(TAG, e.getMessage());
    }
}

Я взял за основу исходный код примера дверного звонка для Android Things: https://github.com/androidthings/doorbell

person Hpsaturn    schedule 29.11.2017
comment
Спасибо, но это именно те строки, которые у меня уже есть в моем коде. - person Shubham Shekhar; 12.12.2017

Я столкнулся с аналогичной проблемой, и после установки apk я снова перезапустил Raspberry Pi. После этого он работает нормально для меня.

Это происходит потому, что: Разрешение камеры входит в список опасных разрешений. И чтобы получить такое разрешение, устройство нужно загрузить один раз. Надеюсь, это прояснит проблему.

person Akshay Bora    schedule 10.12.2017
comment
Да я и сам это заметил. Знаете ли вы причину этого? - person Shubham Shekhar; 12.12.2017
comment
Разрешение камеры входит в список опасных разрешений. И чтобы получить такое разрешение, устройство нужно загрузить один раз. Надеюсь, это прояснит проблему. - person Akshay Bora; 14.12.2017
comment
Я перезапустил модуль Raspberry PI, но проблема не устранена. - person Shubham Shekhar; 08.01.2018