从 CameraX 1.2 开始,零快门延迟作为一种捕获模式提供。启用零快门延迟可显著降低延迟,相比 默认捕获模式,您永远不会错过精彩瞬间。
启用零快门延迟
要启用零快门延迟,请将 CAPTURE_MODE_ZERO_SHOT_LAG
传递给 ImageCapture.Builder.setCaptureMode()
。如果失败,setCaptureMode()
将回退到 CAPTURE_MODE_MINIMIZE_LATENCY
。
有关捕获模式的更多信息,请参阅图像捕获指南。
工作原理
零快门延迟使用一个环形缓冲区,其中存储最近的三个捕获帧。当用户按下捕获按钮时,CameraX 会调用 takePicture()
,环形缓冲区会检索时间戳最接近按钮按下时间的捕获帧。然后,CameraX 会重新处理捕获会话,从该帧生成图像,并以 JPEG 格式保存到磁盘。
前提条件
在启用零快门延迟之前,请使用 isZslSupported()
确定您的设备是否满足以下要求:
- 目标 Android 6.0+(API 级别 23 及更高版本)。
- 支持
PRIVATE
重新处理。
对于不满足最低要求的设备,CameraX 将回退到 CAPTURE_MODE_MINIMIZE_LATENCY
。
零快门延迟仅适用于图像捕获。您不能将其用于视频捕获或与相机扩展一起使用。
最后,由于使用闪光灯会导致更高的延迟,因此当闪光灯开启或处于自动模式时,零快门延迟功能将不起作用。有关设置闪光灯模式的更多信息,请参阅 setFlashMode()
。