Как включить передний фонарик (не задний) устройства Android

Я разработал простое приложение для включения/выключения фонарика. Но мне не удалось найти способ включить передний фонарик устройства (если он доступен).

Код для проверки доступности:

boolean hasCameraFlash = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

Мой код для включения:

@RequiresApi(api = Build.VERSION_CODES.M)
private void flashLightOn() {
    try {
        String cameraId = cameraManager.getCameraIdList()[0];
        cameraManager.setTorchMode(cameraId, true);
    } catch (CameraAccessException ignored) {
    }
}

Можно ли включить передний фонарик устройства, не включая камеру. Будем признательны за любую помощь.

(Обратите внимание, что я новичок в разработке Android)


person z1nc0r3    schedule 01.02.2021    source источник


Ответы (1)


Для проверки наличия флэш-памяти в устройстве:

Вы можете использовать следующее:

context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

который вернет true, если вспышка доступна, и false, если нет.

См.:
http://developer.android.com/reference/android/content/pm/PackageManager.html для получения дополнительной информации.

Для включения/выключения фонарика:

Я погуглил и получил это о android.permission.FLASHLIGHT. Разрешение манифеста Android выглядит многообещающе:

<!-- Allows access to the flashlight -->
 <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();

Фрагмент кода для отключения светодиодной подсветки камеры.

cam.stopPreview();
  cam.release();
person Usama Altaf    schedule 01.02.2021
comment
я не думаю, что что-либо из этого указывает, какую вспышку включить/использовать, не так ли? все это может быть верно для заднего фонарика, а не для переднего, или здесь есть что-то, что говорит, что это специально для передней камеры? - person a_local_nobody; 01.02.2021
comment
Как сказал @a_local_nobody, этот код не определяет заднюю или переднюю вспышку. Я не уверен, что вообще возможно идентифицировать переднюю вспышку. - person z1nc0r3; 01.02.2021