Android / Java: detect if device has BACK Camera

How to determine if a camera has a BACK camera?

This is my code to determine if a 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 has only a front camera without a flashlight.

+6
source share
3 answers

For API> = 9: you can use Camera.getCameraInfo something like this:

 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:

 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); 
+15
source

Try checking the number of cameras:

 import android.hardware.Camera; int numberOfCameras = Camera.getNumberOfCameras(); 

If it is more than 1, a pretty confident rear view camera.

+2
source
 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.

+1
source

Source: https://habr.com/ru/post/976024/


All Articles