【发布时间】:2019-04-19 21:54:29
【问题描述】:
当我在这个特定的 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" />
而且我在破坏时释放相机:
public void releaseCamera()
{
if (_camera != null)
{
_camera.stopPreview();
_camera.setPreviewCallback(null);
_camera.release();
_camera = null;
}
_surfaceHolder.removeCallback(this);
}
你能想到我得到这个的任何原因吗?我怀疑存在某种错误,因为我使用的是相机而不是相机2,但这是一个疯狂的猜测。 Reading the updates for 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();
}
}
【问题讨论】: