未经相机许可无法打开相机“0”

Posted

技术标签:

【中文标题】未经相机许可无法打开相机“0”【英文标题】:cannot open camera "0" without camera permission 【发布时间】:2021-08-05 17:37:30 【问题描述】:

我的清单中有以下内容

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />

但是我收到了这个错误

An error occurred while connecting to camera 0: Status(-8, EX_SERVICE_SPECIFIC): '1: validateClientPermissionsLocked:1165: Caller ... (PID 10153, UID 6049) cannot open camera "0" without camera permission'

我正在尝试使用此代码让相机工作

public static Camera getCameraInstance()
    Camera c = null;
    try 
        c = Camera.open();
     catch (Exception e) 
        Log.e("getCameraInstance", "exception", e);
    
    return c; // returns null if camera is unavailable

如何让这台相机工作?

【问题讨论】:

【参考方案1】:

需要在运行时启用权限。当索引为0的相机没有权限时,输出上述错误。向清单添加权限并不是在手机上启用它的原因......下面的代码将。

    public static void checkCameraPermissions(Context context)
        if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED)
        
            // Permission is not granted
            Log.d("checkCameraPermissions", "No Camera Permissions");
            ActivityCompat.requestPermissions((Activity) context,
                    new String[]  Manifest.permission.CAMERA ,
                    100);
        
    

【讨论】:

嘿,只有代码的答案不是这里的常态。也许您可以在它周围添加一些措辞,解释 OP 做错了什么以及这段代码如何修复它? @SoftwareEngineer 完成!

以上是关于未经相机许可无法打开相机“0”的主要内容,如果未能解决你的问题,请参考以下文章

无法用ubuntu opencv c ++打开相机

无法在Android上使用C ++ OpenCV打开相机

cvCreateCameraCapture 无法访问 OpenCV 3.0 相机

相机无法使用Intent打开

OpenCV 无法使用 Qt 打开相机

我无法让相机打开它的灯