检查自定义前置摄像头是否可用

时间:2017-06-21 10:22:30

标签: android camera android-camera surfaceview

我一直在使用Custom SurfaceView Camera。我需要使用前置摄像头,因为我的应用程序需要用户自拍。

为此,我已经使用以下代码检查了前置摄像头是否可用。

public boolean checkFrontCamera() {
    int numCameras = Camera.getNumberOfCameras();
    for (int i = 0; i < numCameras; i++) {
        Camera.CameraInfo info = new Camera.CameraInfo();
        Camera.getCameraInfo(i, info);
        if (CameraSource.CAMERA_FACING_FRONT == info.facing) {
            return true;
        }
    }
    return false;
}

如果设备同时具有相机,则其工作正常,并返回true。但是如果设备只有一个摄像头,则此方法总是返回false,因为在这种情况下info.facing为0,并且在此代码中相同,CameraSource.CAMERA_FACING_FRONT为1。

对于相机,我使用过gms视觉库。下面的代码是相机来源。

  CameraSource mCameraSource = new CameraSource.Builder(context, detector)
                .setRequestedPreviewSize(640, 480)
                .setFacing(CameraSource.CAMERA_FACING_FRONT)
                .setRequestedFps(30.0f)
                .build();

在这里,我需要通过相机对面的参数。

如果有其他选择,请提供。欢迎所有解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用此方法返回相机对象

private Camera getCameraInstance() {
    Camera c = null;
    try {
        if (Camera.getNumberOfCameras() >= 2) {
            //Front facing camera
            c = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
        } else {
            // only has one camera (Rear)
            c = Camera.open();
        }
    } catch (Exception e) {
        // Camera is not available (in use or does not exist)
    }
    return c; // returns null if camera is unavailable
}