Можно ли в Android вызвать фонарик фронтальной камеры?

У телефона samsung galaxy a6 имеется фронтальная камера со своей вспышкой. То есть фонарики есть с двух сторон. Можно ли как-то в приложении вызвать фронтальную вспышку, чтобы она включалась по кнопке? Можно ли сделать так, чтобы при нажатии кнопки фонарики включались с двух сторон телефона, то есть и задний и фронтальный?


Ответы (2 шт):

Автор решения: Andrew

Перед тем как заняться включением самого фонарика, вам нужно предварительно прописать в манифесте разрешение на работу с ним:

 <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. Вообще фронтальной вспышкой оборудован далеко не каждый смартфон, поэтому я думаю что доступ к данной фиче делается отдельно производителем через какие-то костыли.

→ Ссылка
Автор решения: Barmaley Red Star

Делается это так:

  1. Получаем ссылку на CameraManager, через cameraManager=(CameraManager) getSystemService(CAMERA_SERVICE);
  2. Получаем список всех камер cameraManager.getCameraIdList()
  3. Далее пробегаемся по всем камерам и запрашиваем cameraManager.getCameraCharacteristics(String cameraId)
  4. В полученном объекте класса CameraCharacteristics запрашиваем свойство LENS_FACING, если свойство равно FRONT - значит это фронтальная камера
  5. Далее запрашиваем свойство FLASH_INFO_AVAILABLE, если true - значит камера имеет вспышку
  6. Теперь уже можно включить вспышку выбранной камеры cameraManager.setTorchMode(сameraId, true)
→ Ссылка