W / CameraBase:连接相机时发生错误:camera.open()调用为0
我正在编写一个相机应用程序,每当我调用camera.open()时该应用程序崩溃,然后出现此错误:
W/CameraBase﹕ An error occurred while connecting to camera: 0
这是我打开相机的方法:
public void getCameraInstance(){
mCamera = null;
try
{
mCamera = Camera.open(); // attempt to get a Camera instance
}
catch (Exception e)
{
// Camera is not available (in use or does not exist)
}
}
更新:
如果您正在阅读本文,请注意,这是针对原始相机API的,不再应用最新版本的相机API(camera2)。
从那时起,您应该使用camera2 api,因为它具有更好的功能并且还具有更好的图像处理管道。
注意仅在不包括API 21(Lolipop)时有效,即不适用于Lolipop及更高版本。
-
使用以下方法
android.hardware.Camera.open(int cameraId)
您应该传递cameraId,如果您想要前置摄像头ID,则可以使用以下方法
private int findFrontFacingCamera() { // Search for the front facing camera int numberOfCameras = Camera.getNumberOfCameras(); for (int i = 0; i < numberOfCameras; i++) { CameraInfo info = new CameraInfo(); Camera.getCameraInfo(i, info); if (info.facing == CameraInfo.CAMERA_FACING_FRONT) { cameraId = i; cameraFront = true; break; } } return cameraId; }
-
如果其他应用程序打开了同一台摄像机,则会抛出RuntimeException。
-
使用完相机后,您必须调用release(),否则它将保持锁定状态,并且无法用于其他应用程序。
-
对于特定的硬件摄像机,您的应用程序一次只能激活一个Camera对象。
-