对于运行 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 测试