连接到摄像机时出错:0 ---无法连接到摄像机服务

Agg*_*sor 0 java camera android

当我在这个特定的Nexus 5上打开相机时,我遇到了手机特定的问题.它的An error occurred while connecting to camera: 0 --- Fail to connect to camera service错误.在至少十几个其他手机上一切正常.在Nexus 5上使用相机的其他应用程序不会崩溃(表明并非所有应用程序都无法访问相机,只是我的应用程序).

关于这一点还有其他一些问题,我尝试了所有这些问题.他们都谈论缺少权限,并确保相机在使用后被销毁.

要清楚我的清单请求并正确使用相机:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera2" />
Run Code Online (Sandbox Code Playgroud)

我在破坏时释放相机:

public void releaseCamera()
{
    if (_camera != null)
    {
        _camera.stopPreview();
        _camera.setPreviewCallback(null);
        _camera.release();
        _camera = null;
    }

    _surfaceHolder.removeCallback(this);
}
Run Code Online (Sandbox Code Playgroud)

你能想到我能得到这个的任何理由吗?我怀疑是某种bug,因为我使用相机而不是相机2,但这是一个疯狂的猜测.阅读API 6.0的更新后,相机上有一节说:

在此版本中,用于访问摄像头服务中的共享资源的模型已从先前的"先来先服务"访问模型更改为优先考虑高优先级进程的访问模型.

再次没有重写整个应用程序使用camera2(不是一个选项)我不能肯定地说是发生了什么.

这是我打开相机的代码(以及除Nexus 5之外的其他所有手机的功能)

private void setInitialCamera()
{
    try
    {
        if (_isBackFacing == true)
        {
            _camera = Camera.open(0);
        } else
        {
            _camera = Camera.open(1);
        }
    } catch (RuntimeException e)
    {
        Log.d("Runtime Exception","Error " + e);
        e.printStackTrace();
    } catch (Exception e)
    {
        Log.d("Camera Error: ", " Android is unable tell what the error was");
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

Agg*_*sor 13

所以它看起来像罪魁祸首有什么做的6.0.1更新这款手机的经历.

虽然这在其他手机上没有发生,但它确实在失败的Nexus 5上发生了.

发生了什么是6.0.1更新允许用户为应用程序设置个人权限.所以不知何故,相机的延迟被切断了.重新开启此问题解决了这个问题.

到那儿你去 Settings -> Apps -> [App Name] -> Permissions

在此输入图像描述