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

前端之家收集整理的这篇文章主要介绍了Android / Java:检测设备是否有BACK摄像头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何检测设备背面是否有摄像头?

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

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

但即使设备只有没有手电筒的前置摄像头,它也是正确的.

解决方法

对于API> = 9:您可以使用 Camera.getCameraInfo这样的内容
  1. int backCameraId = -1;
  2. for(int i=0;i<Camera.getNumberOfCameras();i++){
  3. CameraInfo cameraInfo = new CameraInfo();
  4. Camera.getCameraInfo(i,cameraInfo);
  5. if(cameraInfo.facing==CameraInfo.CAMERA_FACING_BACK) {
  6. backCameraId = i;
  7. break;
  8. }
  9. }
  10. Log.d(TAG,"back camera exists ? "+(backCameraId>-1));
  11. Log.d(TAG,"back camera id :"+backCameraId);

对于API> = 21,建议您使用Camera2 API:

  1. String backCameraId = null;
  2. CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
  3. for(String cameraId:manager.getCameraIdList()){
  4. CameraCharacteristics cameraCharacteristics = manager.getCameraCharacteristics(cameraId);
  5. Integer facing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
  6. if(facing==CameraMetadata.LENS_FACING_BACK) {
  7. backCameraId = cameraId;
  8. break;
  9. }
  10. }
  11. Log.d(TAG,"back camera exists ? "+(backCameraId!=null));
  12. Log.d(TAG,"back camera id :"+backCameraId);

猜你在找的Android相关文章