如何检测android中是否有前置摄像头?

如何检测android中是否有前置摄像头?,android,camera,crash,Android,Camera,Crash,事实上,我的应用程序出现了一些问题 就像我有一个按钮可以打开前摄像头和一个服务员徽章,但当我试图检查一个设备是否有摄像头,如果没有,我只是隐藏按钮 但我有一个设备,使用前摄像头作为QR扫描仪,所以它实际上不是一个可以使用的摄像头,所以当我尝试单击该按钮时,应用程序崩溃 因此,问题是我如何处理和检查摄像机是否不仅存在,而且是否工作?使用此方法检测设备是否有前置摄像机 private boolean hasFrontCamera() { Camera.CameraInfo cameraInf

事实上,我的应用程序出现了一些问题

就像我有一个按钮可以打开前摄像头和一个服务员徽章,但当我试图检查一个设备是否有摄像头,如果没有,我只是隐藏按钮

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


因此,问题是我如何处理和检查摄像机是否不仅存在,而且是否工作?

使用此方法检测设备是否有前置摄像机

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;
}
private boolean hasFrontCamera(){
Camera.CameraInfo CameraInfo=新的Camera.CameraInfo();
int numberOfCameras=Camera.getNumberOfCameras();
对于(int i=0;i
Android Pie为枚举摄像头添加了更多功能:

在Android 9设备上运行的应用程序可以通过调用来发现每一个可用的摄像头。应用程序不应假设设备只有一个后摄像头或一个前摄像头

例如,如果您的应用程序有一个按钮可在前后摄像头之间切换,则可能有多个前后摄像头可供选择。您应该浏览相机列表,检查每个相机的特征,并决定向用户显示哪些相机


好了,没有办法检查摄像机是否“工作”!您可以检查设备是否有前置摄像头,但没有前置摄像头…太好了,这比我的“if(getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_camera_front))”效果更好,谢谢。