google更新其android开发函数库jetpack中的相机控制函数库camerax,现在提供1.2 beta测试版本。这个新版本更紧密集成ml kit,让开发者在应用程序使用ml kit时,减少样板程序代码,并且支持零快门延迟功能,让camerax相机应用程序更快地即时拍摄动作画面。
camerax函数库提供了许多api,让开发者能够以简单的api,在应用程序中添加复杂的相机功能,包括在相机应用程序中使用机器学习技术,google的ml kit提供多种设备端视觉api,像是侦测人脸、条码、文本和对象等,而camerax 1.2紧密集成ml kit,使开发者能够简单开发高端相机功能。
另外,由于许多画面一闪即逝,用户点击快门按钮时,常因为延迟而错失拍摄的最佳时刻,camerax 1.2提供零快门延迟,开发者在设置拍摄模式时,除了最佳品质、最低延迟两个原本的模式外,现在还多了以零延迟模式拍照的选择,当设备不支持零延迟,则camerax会自动回退到最低延迟模式。
google解释零快门延迟的做法,该功能使用环形缓冲区(circular buffer),当照片被捕捉时,实际上系统已经在该时间点前后拍摄了一系列的照片,存储到环形缓冲区中,camerax会从环形缓冲区选出一张最接近按下快门按钮时刻的照片。
除了目前这个功能仍在实验阶段,开发者要小心使用之外,官方还提到,维持环形缓冲区运行属于计算密集的工作,因此没办法在使用videocapture或是扩展组件时使用,而且也会增加应用程序所占用的内存足迹。