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

时间:2013-10-25 06:14:57

标签: android camera

我目前正在制作正在构建Android相机应用的最终年度项目。

我对相机界面感到困惑:PictureCallbackShutterCallbackPreviewCallback

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

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

2 个答案:

答案 0 :(得分:7)

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

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

PictureCallback为您提供表示捕获图片的字节数组。图片的格式(jpg,raw或postview)取决于你在takePicture()

中传递回调的位置

为了进一步参考,您应该阅读documentation for Camera及其相关的接口和类。

答案 1 :(得分:1)

我认为谷歌的文件为您的问题提供了足够的解释:

Camera.ShutterCallback
public abstract void onShutter ()
  

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

Camera.PreviewCallback  
public abstract void onPreviewFrame (byte[] data, Camera camera)
  

显示为预览帧。调用此回调   事件线程open(int)是从。

调用的      

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

您可以在拍摄照片时使用ShutterCallback,使用PreviewCallBack从相机捕捉帧。请记住,PreviewCallBack有一些问题。见link

参考文献:
http://developer.android.com/reference/android/hardware/Camera.ShutterCallback.html
http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html