На устройствах с Android 13 или более поздней версии платформа Android предоставляет многоуровневое управление яркостью фонарика. В Android 12 и более ранних версиях фреймворк позволяет только включать и выключать фонарик. Поддержка многоуровневого управления яркостью позволяет использовать фонарик в разных ситуациях, например регулировать яркость в зависимости от условий освещения и подавать сигналы о помощи с помощью стробоскопического эффекта, отправляя быстрые импульсы света подряд. Ещё одно преимущество этой функции – она может продлить время работы от батареи и повысить производительность, поскольку фонарик не всегда нужно включать на максимальную мощность, что может привести к перегреву.
Общедоступные API
Приложения могут использовать функцию управления яркостью фонарика с помощью следующих общедоступных API и ключей характеристик камеры. Для этих API не требуется разрешение на доступ к камере, поскольку они не используют ее.
CameraManager API
public void turnOnTorchWithStrengthLevel (String cameraId, int torchStrength): Устанавливает уровень яркости фонарика, связанного с заданным значениемcameraId, в режиме фонарика. Если фонарик выключен и значениеtorchStrengthбольше или равно1, фонарик включается с уровнем яркости, указанным вtorchStrength.public int getTorchStrengthLevel (String cameraId)– возвращает уровень яркости вспышки, связанной сcameraId.
Ключи CameraCharacteristics
FLASH_INFO_STRENGTH_MAXIMUM_LEVEL: Максимальный уровень яркости. HAL камеры сообщает об этой функции, задавая значение больше1.FLASH_INFO_STRENGTH_DEFAULT_LEVEL: Уровень яркости фонарика по умолчанию.
Реализация
Чтобы поддерживать функцию управления яркостью фонарика на устройстве, используйте следующие интерфейсы HAL AIDL камеры:
Местоположение: /camera/device/aidl/android/hardware/camera/device/ICameraDevice.aidl
Чтобы поддерживать функцию управления яркостью фонарика, убедитесь, что в вашей реализации HAL объявлены следующие ключи характеристик камеры:
Справочную реализацию аппаратно-зависимого уровня камеры с поддержкой управления яркостью вспышки можно найти на странице EmulatedCameraDeviceHWLImpl.cpp.
Проверка
Чтобы проверить, правильно ли реализована функция управления яркостью фонарика, запустите следующие тесты VTS и CTS: