我使用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
应用程序正在成功运行,但它不会捕获任何图像。
答案 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。之后,它对我来说很好。
这是因为: - 相机许可属于危险许可列表。要获得此类许可,设备需要启动一次。希望这能澄清这个问题。