简体   繁体   English

Android / Java:检测设备是否有BACK摄像头

[英]Android/Java: detect if device has a BACK Camera

How do I detect if the device has a camera on the BACK? 如何检测设备背面是否有摄像头?

This is my code to detect if the device has a Flashlight: 这是我检测设备是否有手电筒的代码:

if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) 
    || (_camera.getParameters().getSupportedFlashModes() != null)) hasFlashlight = true;
else hasFlashlight = false;

But it is TRUE even if the device only has a Front Camera without the flashlight. 但即使设备只有没有手电筒的前置摄像头,它也是正确的。

For API >= 9 : you can use Camera.getCameraInfo with something like this : 对于API> = 9:您可以使用Camera.getCameraInfo ,如下所示:

int backCameraId = -1;
for(int i=0;i<Camera.getNumberOfCameras();i++){
    CameraInfo cameraInfo = new CameraInfo();
    Camera.getCameraInfo(i,cameraInfo);
    if(cameraInfo.facing==CameraInfo.CAMERA_FACING_BACK) {
        backCameraId = i;
        break;
    }
}
Log.d(TAG, "back camera exists ? "+(backCameraId>-1));
Log.d(TAG, "back camera id  :"+backCameraId);

For API >= 21, you are advised to use the Camera2 API : 对于API> = 21,建议您使用Camera2 API:

String backCameraId = null;
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
for(String cameraId:manager.getCameraIdList()){
    CameraCharacteristics cameraCharacteristics = manager.getCameraCharacteristics(cameraId);
    Integer facing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
    if(facing==CameraMetadata.LENS_FACING_BACK) {
        backCameraId = cameraId;
        break;
    }
}
Log.d(TAG, "back camera exists ? "+(backCameraId!=null));
Log.d(TAG, "back camera id  :"+backCameraId);

Try check the number of Cameras: 尝试检查相机的数量:

import android.hardware.Camera;

int numberOfCameras = Camera.getNumberOfCameras();

If it is greater than 1, pretty sure got a rear camera. 如果它大于1,相当肯定有后置摄像头。

public boolean isRearCameraAvailable(Context context) {
    return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
}

Checks if the device has a camera facing away from the device user 检查设备是否有远离设备用户的摄像头

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM