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

发布于 2021-01-30 16:38:34

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

关注者
0
被浏览
318
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    使用以下方法

    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对象。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看