使用零快门延迟功能缩短延迟时间

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()