【问题标题】:It seems that your device does not support camera(or it is locked)您的设备似乎不支持摄像头(或已锁定)
【发布时间】:2014-01-07 02:47:54
【问题描述】:

Android opencv 示例和教程运行良好,突然有一天我得到了所有这些:
"It seems that your device does not support camera (or it is locked). The application will be closed"
请帮忙,我该如何解决?

我已经重新安装了opencv并再次导入并制作了新的模拟器,但问题仍然存在。

【问题讨论】:

标签: java android opencv android-camera


【解决方案1】:

转到您的设备设置->应用程序->您的应用程序->权限->打开相机权限..

为我工作..

【讨论】:

  • 这是我必须做的。不知道为什么没有授予权限。
  • @AutonomousApps,因为您使用的是 API/构建工具 > 23
  • 为我工作,但像 Geraldo 的回答那样向用户请求权限应该会更好。
  • 要在运行时而不是手动解决它,请在此处查看我的答案:stackoverflow.com/a/44087946/4398784
【解决方案2】:

检查 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"/>

它对我有用..

【讨论】:

    【解决方案3】:

    来自Android Docs

    从 Android 6.0(API 级别 23)开始,用户授予以下权限 应用程序运行时的应用程序,而不是安装应用程序时的应用程序。

    这意味着在Android 23或更高版本上,除了manifest,你还需要在runtime请求权限。在这种情况下,相机访问。

    为此,您可以使用以下代码:

    // 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);
            }
        }
    }
    

    您还可以按照docs 中的说明处理请求响应。

    希望对你有帮助!

    【讨论】:

      【解决方案4】:

      刚刚遇到这个问题,我通过杀死任何其他使用相机的应用程序来解决它。我之前的一些教程仍在后台运行。

      【讨论】:

        【解决方案5】:

        就我而言,问题是
        我的应用程序在另一个活动中使用Android Camera
        另一个活动 在 Destroyed 上使用后没有释放 Camera(锁定它)
        在我在另一个活动上释放Camera 后,此对话框将不再显示。

        所以一般要解决这个问题

        1. 检查 CAMERA 权限
        2. 检查 CAMERA 未锁定(通过在任何其他活动中使用后将其释放)

        【讨论】:

        【解决方案6】:

        这些示例应该可以工作,因为它们使用的是 JavaCamera。当我尝试使用 Native 时,我遇到了这个问题。似乎本机不适用于每部手机。见this

        我必须补充一点,在某些设备中,openCV 原生相机根本不起作用bug 2359

        【讨论】:

        • 我在模拟器上运行时遇到了类似的问题,解决方案是:转到模拟器,Setting-&gt;Apps-&gt;my_app-&gt;Permissions,然后启用“相机”。我发现它被请求但未启用。
        猜你喜欢
        • 1970-01-01
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多