Android opencv
示例和教程一直运行正常,但某一天我对所有这些内容都出现以下提示:
“似乎您的设备不支持相机(或者它被锁定)。应用程序将被关闭”
请帮忙解决,我该如何修复?
我已经重新安装了opencv并重新导入,还创建了新的模拟器,但问题仍然存在。
Android opencv
示例和教程一直运行正常,但某一天我对所有这些内容都出现以下提示:
“似乎您的设备不支持相机(或者它被锁定)。应用程序将被关闭”
请帮忙解决,我该如何修复?
我已经重新安装了opencv并重新导入,还创建了新的模拟器,但问题仍然存在。
前往您的设备设置 -> 应用程序 -> 您的应用程序 -> 权限 -> 开启相机权限。
对我有用。
检查AndroidManifest.xml中的相机权限。
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-feature android:name="android.hardware.camera.front"/>
<uses-feature android:name="android.hardware.camera.front.autofocus"/>
这对我有用。
来自Android文档:
从 Android 6.0(API级别23)开始,用户在应用程序运行时授予权限,而不是在安装应用程序时。
这意味着在 Android 23 或更高版本中,除了清单外,您还需要在运行时请求权限。在此示例中,请求相机访问权限。
要实现此操作,您可以使用以下代码:
// First check android version
if (MyVersion > Build.VERSION_CODES.LOLLIPOP_MR1) {
//Check if permission is already granted
//thisActivity is your activity. (e.g.: MainActivity.this)
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
// Give first an explanation, if needed.
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.CAMERA)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.CAMERA},
1);
}
}
}
您也可以处理请求响应,如 文档 中所述。
希望对您有所帮助!
我曾经遇到过这个问题,解决方法是结束掉其他正在使用相机的应用程序。可能是之前的一些教程还在后台运行。
Android相机
相机
(锁定)相机
之后,这个对话框就不会再次显示。