2

我对 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 后启动预览的块时它开始工作的原因)。有人可以为我确认吗?

4

0 回答 0