在服务中使用相机时,手机屏幕变得不可触摸(被透明窗口锁定(并且仅发生以下错误
Access denied finding property "camera.hal1.packagelist"
原因及其解决方案是什么?请帮忙..
我正在使用 OpenCV 教程代码在 android 上的相机应用程序。我遇到了同样的错误,在查看答案后,我确实错过了一个权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
尽管应用不会在外部保存任何数据,但如果没有此权限,则会发生拒绝访问错误。希望对您有所帮助。
我在应用程序中遇到了同样的错误,我使用的是表面视图并将其权重设置为零。我将其改回 1,错误已解决。请检查您的xml代码,这可能会有所帮助。
我的测试设备"LG V1"上的相机 30 API 遇到了同样的问题。我发现,当我像这样打开相机时,出现了这条消息(Access denied finding property "camera.hal1.packagelist"
(:
int numberOfCameras = Camera.getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
camera = Camera.open(i);
cameraId = i;
}
}
重要的是,这只发生在LG V30上,它有2个后置摄像头(numberOfCameras=3
(。
经过一些测试,我发现这适用于此设备:
/** A safe way to get an instance of the Camera object. */
public static Camera getCameraInstance(){
Camera c = null;
try {
c = Camera.open(); // attempt to get a Camera instance
}
catch (Exception e){
// Camera is not available (in use or does not exist)
}
return c; // returns null if camera is unavailable
}
上面的示例代码将访问具有多个摄像头的设备上的第一个后置摄像头。在这里您可以找到详细说明。
请查看您是否向用户请求相机权限。仅在清单中指定权限不会超过某个 Android 级别。
这将解决您的问题。
如何请求许可,请点击此链接。
关于Access denied finding property
类似错误
-
不太可能的原因:缺少相关用户权限
- 哪
- 应添加相关配置
-
<uses-permission android:name="android.permission.xxx"/>
-
- 运行应用时,首先弹出授予相关权限的窗口,用户自己应接受
- 授予/授予应用程序权限
- 应添加相关配置
- 哪
-
最可能的原因 = 可能:
- 原因(以前的日志,你可以看到它 logcat(警告日志:
-
type=1400 audit(xxx): avc: denied { xxx } for name=xxx dev=xxx ino=xxx scontext=xxx tcontext=xxx tclass=xxx permissive=0
-
- 原因(以前的日志,你可以看到它 logcat(警告日志:
如何修复avc: denied
错误?
- 简单:
- 参考官方文档验证 SELinux | Android开源项目尝试使用
audit2allow
和相关工具来修复。
- 参考官方文档验证 SELinux | Android开源项目尝试使用
- 详细:
- 参考我的另一个帖子的声明
我的问题是在高于 API 23
的 android 版本中使用 Camera
,我做了两个实现。
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
camera = Camera.open();
parameters = camera.getParameters();
camera.startPreview();
}
。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
CameraManager cameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
try {
String cameraId = cameraManager.getCameraIdList()[0];
cameraManager.setTorchMode(cameraId, true);
} catch (Exception e) {
e.printStackTrace();
}
} else {
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
}
有关更多信息,请参阅Camera
、Camera2
和CameraX
源 https://developer.android.com/training/camera/choose-camera-library