无法在Android Things中授予相机权限

时间:2017-11-27 05:50:45

标签: android-things

我使用Raspberry PI3板运行Android Things dev-preview 0.5.0。相机连接到电路板上。要手动向摄像机授予权限,我在终端中运行以下命令:

adb shell pm grant org.tensorflow.demo android.permission.CAMERA

但是我收到了以下错误:

不允许操作:java.lang.SecurityException:无法为包org.tensorflow.demo授予系统固定权限android.permission.CAMERA

应用程序正在成功运行,但它不会捕获任何图像。

3 个答案:

答案 0 :(得分:2)

重启RPi对我不起作用。我发现手动授予权限解决了访问问题:

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

请参阅Github上的this post

答案 1 :(得分:1)

这是一个老问题,但现在工作得非常好,几个月前你需要一次重启才能获得权限,但现在我不这样做。否则,您可以尝试下一个代码示例:

完整代码https://github.com/hpsaturn/bgcamera

<强> Manifiest

<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

答案 2 :(得分:1)

我遇到了类似的问题,安装完apk后我又重新启动了raspberry pi。之后,它对我来说很好。

这是因为: - 相机许可属于危险许可列表。要获得此类许可,设备需要启动一次。希望这能澄清这个问题。