對於運行 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