【发布时间】:2016-02-01 01:25:21
【问题描述】:
我正在编写一个 Android 应用程序,它从相机获取持续更新并在调用 onPreviewFrame(byte[] data, Camera camera) 时处理它们。
问题是 onPreviewFrame 每秒只被调用大约 8-10 次,而不是 30 次(我预计对于 30 FPS 相机)。我认为这是因为我的 UI 正在接收所有相机回调,而不是单独的线程。
这是我的 SurfaceView,它持有相机并接收相机回调:
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback, Callback {
private Camera mCamera;
...
mCamera.setPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
//Frame received (about 8 per second)
这是我打开相机的代码(在我的主要活动中):
final Camera camera = getCameraInstance(); //calls camera.open()
mPreview = new CameraPreview(this, camera);
我应该如何使用线程、Asynctask 或 Handler 使相机回调发生在一边?我将如何在 UI 线程中接收这些更新?
【问题讨论】:
标签: android multithreading optimization camera android-handler