對於運行 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
aidl/vts/VtsAidlHalCameraProvider\_TargetTest.cpp - CTS:
/platform/cts/tests/camera/src/android/hardware/camera2/cts/FlashlightTest.java