2024年10月25日 第27讲 CameraCaptureSession CaptureCallback详解 极客笔记
本讲是Android Camera专题系列的第27讲,我们介绍Android Camera2 API专题的CameraCaptureSession.CaptureCallback详解。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
用于监控Camera HAL处理某个CaptureRequest的处理状态
API | Description |
---|---|
onCaptureStarted(session, request, long timestamp, long frameNumber) | 当Camera HAL开始处理这个CaptureRequest时调用,对应这一张图像开始曝光时。或者开始reprocess这个CaptureRequest时调用。 |
onCaptureProgressed(session, request, CaptureResult partialResult) | Camera HAL Pipeline中,部分模块完成这个CaptureRequest的处理,有Partial Result上报时调用。 |
onCaptureCompleted(session, request, TotalCaptureResult result) | 这个CaptureRequest处理完成后调用,会打包所有的partial result一起上报给App。 |
onCaptureBufferLost(session, request, Surface target, long frameNumber) | 指定Surface不会收到这个CaptureRequest处理后的Buffer了,通常原因是底层处理这路Stream发生错误或因Flush而主动丢帧。 |
onCaptureFailed(session, request, CaptureFailure failure) | 整个CaptureRequest处理失败时调用,不会有TotalCaptureResult了,onCaptureCompleted不会被调用。如果CaptureFailure#wasImageCaptured为true则表示某些路Surfaces可能会收到Image Buffer。 |
onCaptureSequenceAborted(session, int sequenceId) | 整个序列的CaptureRequest放弃继续处理时调用,通常是由于stopRepeating 或 abortCaptures调用了 |
onCaptureSequenceCompleted(session, int sequenceId, long frameNumber) | 整个序列的CaptureRequest处理完后调用,sequence id等于调用送CaptureRequest方法(ex. capture)的返回值 |
App如何使用
参数
timestamp
Reprocess CaptureRequest:输入图像开始曝光时的时间戳
通常用于同步CaptureResult和Image
frameNumber
调用次数和时机
不同CaptureRequest可以有不同的回调次数
可能发生在onCaptureStarted之前或之后
每次回调的partial result内容都不重复
App如何使用
本文链接:http://so.lmcjl.com/news/16206/