我对 Android 中的 Camera previewCallback 有疑问。我的应用程序有 2 个主要部分,打开相机并配置其参数的 Activity,然后是用于显示预览的 SurfaceView 的子类。我正在测试 4.0.4
如果 Activity 实现 Camera.PreviewCallback 并且我执行以下操作:
Public Class PreviewFrameActivity extends Activity implements Camera.PreviewCallback {<br />
@Override
public void onCreate(Bundle savedInstanceState) {
// setup layout and create SurfaceView object before getting here
Camera mCamera = Camera.open();
mCamera.setPreviewCallback(this);
}
public void onPreviewFrame(byte[] data, Camera camera) {
Log.d(TAG, "Starting frame processing...");
}
}
previewCallback 从来没有真正被称为这样做。但是,如果我让 SurfaceView 实现 PreviewCallback 并将其设置在相机对象上作为 surfaceCreated 的一部分,那么回调会突然开始工作。这让我相信,即使文档说 setPreviewCallback 可以随时调用,但事实并非如此。与 startPreview() 非常相似,似乎只有在拥有有效的预览 Surface 之后才能调用 setPreviewFormat(这就是为什么当我将代码移动到创建 Surface 后启动预览的块时它开始工作的原因)。有人可以为我确认吗?