tangguo

W / CameraBase:连接相机时发生错误:camera.open()调用为0

android

我正在编写一个相机应用程序,每当我调用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及更高版本。


阅读 690

收藏
2020-11-02

共1个答案

一尘不染

使用以下方法

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;
}
  1. 如果其他应用程序打开了同一台摄像机,则会抛出RuntimeException。

  2. 使用完相机后,您必须调用release(),否则它将保持锁定状态,并且无法用于其他应用程序。

  3. 对于特定的硬件摄像机,您的应用程序一次只能激活一个Camera对象。

2020-11-02