答案 0 :(得分:2)
在Camera2中,api仍然存在一种可用于播放快门声的回调方法
CameraCaptureSession.CaptureCallback.onCaptureStarted
在API级别21中添加 void onCaptureStarted(CameraCaptureSession session, CaptureRequest请求, 很长的时间戳, long frameNumber) 当相机设备开始捕获请求的输出图像时,在图像曝光开始时,或者当相机设备开始处理输入图像以进行重新处理请求时,将调用此方法。
对于常规捕获请求,在帧的捕获开始时调用此回调,因此这是播放快门声音或触发UI捕获指示符的最合适时间。
提供了用于此捕获的请求,以及开始曝光的实际时间戳。对于重新处理请求,此时间戳将是输入图像的曝光开始,其与用于创建再处理请求的TotalCaptureResult的结果时间戳字段匹配。此时间戳匹配将包含在结果时间戳字段中的时间戳,以及发送到每个输出Surface的缓冲区中的时间戳。可以通过,例如,Image.getTimestamp()或getTimestamp()访问这些缓冲时间戳。包含的帧编号等于将包含在getFrameNumber()中的帧编号。
有关播放快门声相机快门或视频录制开始/停止声音的最简单方法,请参阅MediaActionSound类。
此方法的默认实现不执行任何操作。