如何在安卓设备中检测前置摄像头是否可用?

4

实际上,我的应用程序出现了一些问题。例如,我有一个按钮可以打开前置摄像头并扫描服务员徽章,但问题在于当我尝试检查设备是否有摄像头时,如果没有,我就会隐藏那个按钮。

但是,我有一个设备使用前置摄像头作为QR扫描仪,因此它实际上不能用作摄像头,所以当我尝试点击该按钮时,应用程序会崩溃。

所以问题是如何处理并检查不仅摄像头是否存在,甚至它是否工作?


据我所知,没有办法检查相机是否“工作”!您可以检查设备是否具有前置摄像头,但不能检查后置摄像头... - Darshan
3个回答

6
使用此方法检测设备是否具有前置摄像头。
private boolean hasFrontCamera() {
    Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
    int numberOfCameras = Camera.getNumberOfCameras();
    for (int i = 0; i < numberOfCameras; i++) {
        Camera.getCameraInfo(i, cameraInfo);
        if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
            return true;
        }
    }
    return false;
}

0

您可以使用PackageManager的hasSystemFeature()函数来检查设备是否具有前置摄像头

private boolean checkCameraHardware(Context context) {
        if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)){
            // this device has a camera
            return true;
        } else {
            // no camera on this device
            return false;
        }
    }

0

Android Pie增加了更多功能以枚举相机:

在运行于Android 9设备上的应用程序可以通过调用getCameraIdList()来发现每个可用的相机。应用程序不应假定设备只有一个后置相机或只有一个前置相机。

例如,如果您的应用程序有一个按钮用于在前置和后置相机之间切换,则可能有多个前置或后置相机可供选择。您应该遍历相机列表,检查每个相机的特性,并决定向用户公开哪些相机。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接