我目前正在制作我的最后一年项目,该项目正在构建Android相机应用程序.
我感到困惑的摄像头接口:PictureCallback,ShutterCallback和PreviewCallback.
我知道,当我使用时Camera.takePicture(),PictureCallback会被称为.但是,我们ShutterCallback并PreviewCallback?我什么时候使用它们?
我通过互联网搜索,但我仍然不清楚如何使用它们.任何人都可以为这3个回调提供清晰的解释吗?
ShutterCallback用于向用户提供相机正在工作的反馈,例如播放声音,为快门按钮设置动画等.
PreviewCallback为相机传感器捕获的当前相机预览帧提供了一个字节数组.如果要以某种方式更改帧,请使用此选项,例如在检测到的面上显示矩形.
PictureCallback为您提供了一个表示捕获图片的字节数组.图片的格式(jpg,raw或postview)取决于你在takePicture()中传递回调的位置
我认为谷歌的文件对你的问题给出了足够的解释:
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