我目前正在制作正在构建Android相机应用的最终年度项目。
我对相机界面感到困惑:PictureCallback
,ShutterCallback
和PreviewCallback
。
我知道当我使用Camera.takePicture()
时,会调用PictureCallback
。但是ShutterCallback
和PreviewCallback
呢?我什么时候使用它们?
我通过互联网搜索,但我仍然不清楚如何使用它们。任何人都可以为这3个回调提供清晰的解释吗?
答案 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