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