對於搭載 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
:手電筒的預設亮度。
實作
如要在裝置上支援手電筒強度控制功能,請使用下列相機 AIDL HAL 介面:
位置:/camera/device/aidl/android/hardware/camera/device/ICameraDevice.aidl
請確認 HAL 實作項目宣告下列相機特性鍵,以支援手電筒亮度控制功能:
如需支援手電筒強度控制功能的參考相機 HAL 實作方式,請參閱 EmulatedCameraDeviceHWLImpl.cpp
。
驗證
如要驗證手電筒強度控制功能的實作方式,請執行下列 VTS 和 CTS 測試:
- VTS:
/camera/provider/aidl/vts/VtsAidlHalCameraProvider\_TargetTest.cpp
- CTS:
/platform/cts/tests/camera/src/android/hardware/camera2/cts/FlashlightTest.java