Android Camera:PictureCallback,ShutterCallback和PreviewCallback之间的区别

Zac*_*ack 5 camera android

我目前正在制作我的最后一年项目,该项目正在构建Android相机应用程序.

我感到困惑的摄像头接口:PictureCallback,ShutterCallbackPreviewCallback.

我知道,当我使用时Camera.takePicture(),PictureCallback会被称为.但是,我们ShutterCallbackPreviewCallback?我什么时候使用它们?

我通过互联网搜索,但我仍然不清楚如何使用它们.任何人都可以为这3个回调提供清晰的解释吗?

npa*_*ace 7

ShutterCallback用于向用户提供相机正在工作的反馈,例如播放声音,为快门按钮设置动画等.

PreviewCallback为相机传感器捕获的当前相机预览帧提供了一个字节数组.如果要以某种方式更改帧,请使用此选项,例如在检测到的面上显示矩形.

PictureCallback为您提供了一个表示捕获图片的字节数组.图片的格式(jpg,raw或postview)取决于你在takePicture()中传递回调的位置

有关进一步参考,请阅读Camera及其相关接口和类的文档.


Dev*_*rim 1

我认为谷歌的文件对你的问题给出了足够的解释:

Camera.ShutterCallback
public abstract void onShutter ()
Run Code Online (Sandbox Code Playgroud)

尽可能接近从传感器捕获照片的时刻调用。这是播放快门声音或提供相机操作的其他反馈的好机会。这可能是在照片被触发之后的一段时间,但在实际数据可用之前的一段时间。

Camera.PreviewCallback  
public abstract void onPreviewFrame (byte[] data, Camera camera)
Run Code Online (Sandbox Code Playgroud)

在显示预览帧时调用。此回调在调用 open(int) 的事件线程上调用。

如果使用 YV12 格式,请参阅 setPreviewFormat(int) 中的公式了解预览回调缓冲区中像素数据的排列。

您可以在拍摄照片时使用 ShutterCallback,并使用 PreviewCallBack 从相机捕获帧。请记住 PreviewCallBack 有一些问题。请参阅链接

参考资料:
http://developer.android.com/reference/android/hardware/Camera.ShutterCallback.html
http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html