对于搭载 Android 13 或更高版本的设备,Android 框架针对手电筒强度提供了多级控制。在 Android 12 及更低版本中,Android 框架仅允许开启或关闭手电筒模式。通过支持对手电筒的多级强度控制,设备可以实现一些用例,例如根据光照条件控制手电筒的亮度,以及利用频闪效果连续发送快速闪动的光束以发送求救信号。此功能的另一个好处是,它可以延长电池续航时间并提升性能,因为手电筒模式并不总是需要以最大强度开启,以最大强度开启可能会导致热节流状况。
公共 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 测试: