Можно ли в Android вызвать фонарик фронтальной камеры?
У телефона samsung galaxy a6 имеется фронтальная камера со своей вспышкой. То есть фонарики есть с двух сторон. Можно ли как-то в приложении вызвать фронтальную вспышку, чтобы она включалась по кнопке? Можно ли сделать так, чтобы при нажатии кнопки фонарики включались с двух сторон телефона, то есть и задний и фронтальный?
Ответы (2 шт):
Перед тем как заняться включением самого фонарика, вам нужно предварительно прописать в манифесте разрешение на работу с ним:
<permission android:name="android.permission.FLASHLIGHT"
android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
android:protectionLevel="normal"
android:label="@string/permlab_flashlight"
android:description="@string/permdesc_flashlight" />
Дальше включение вспышки реализуется так:
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
Вот есть подобные вопросы: 1 и 2. Вообще фронтальной вспышкой оборудован далеко не каждый смартфон, поэтому я думаю что доступ к данной фиче делается отдельно производителем через какие-то костыли.
Делается это так:
- Получаем ссылку на
CameraManager, черезcameraManager=(CameraManager) getSystemService(CAMERA_SERVICE); - Получаем список всех камер
cameraManager.getCameraIdList() - Далее пробегаемся по всем камерам и запрашиваем
cameraManager.getCameraCharacteristics(String cameraId) - В полученном объекте класса
CameraCharacteristicsзапрашиваем свойствоLENS_FACING, если свойство равноFRONT- значит это фронтальная камера - Далее запрашиваем свойство
FLASH_INFO_AVAILABLE, еслиtrue- значит камера имеет вспышку - Теперь уже можно включить вспышку выбранной камеры
cameraManager.setTorchMode(сameraId, true)