java - 安卓/Java : detect if device has a BACK Camera

标签 java android camera

如何检测设备背面是否有摄像头?

这是我用来检测设备是否有手电筒的代码:

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

但即使设备只有前置摄像头而没有手电筒,它也是TRUE

最佳答案

对于 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);

API >= 21,建议使用Camera2应用程序接口(interface):

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);

关于java - 安卓/Java : detect if device has a BACK Camera,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26107696/

相关文章:

java - java中的对象引用集

java - 多行表格单元格

java - 最佳实践 : instance variables filling over time

ios - 如何自定义相机 View 并捕获叠加中的部分?

android - 使用相机拍照时如何找到 getThumbnail 的 origID.TakePicture

java - Android 与 ReSTLet/JSON/Jackson 的兼容性

android - 不能刷webview?

android - Gradle 同步错误未能找到 : com. google.android.gms :play-services:6. 1.+'

android - 在 Eclipse 中创建 CVS 时主机名和存储库路径是什么

python : export keyframe from maya in line