当我尝试添加回调缓冲区时,为什么我的Android相机会崩溃?

时间:2014-04-08 12:02:45

标签: android callback camera buffer android-camera

我正在尝试为我的相机应用程序添加一个回调缓冲区,但我现在真的很挣扎。我做的是,一旦表面纹理可用,我首先为我的相机添加了预览回调。所以在onSurfaceTextureAvailable()我做了这个:

mCamera.setPreviewCallbackWithBuffer(null);
mCamera.setPreviewCallbackWithBuffer(getPreviewCallback());
// After allocating the preview callback I start the preview
mCamera.startPreview();

getPreviewCallback()看起来像这样:

private PreviewCallback getPreviewCallback() {
    if (mPreviewCallback == null) {
        mPreviewCallback = new PreviewCallback() {

            @Override
            public void onPreviewFrame(byte[] data, Camera camera) {
                // Here I would like to do something later on
            }

        };
    }
    return mPreviewCallback;
}

现在,我的相机“死”的地方是我添加回调缓冲区的时候。我按下按钮即可完成此操作。因此,当我点击我的按钮时,会调用它:

mCamera.addCallbackBuffer(new byte[FRAME_BYTE_SIZE]); 

其他地方计算FRAME_BYTE_SIZE(在我的nexus 4上是384000) 来自logcat的消息是这样的:

04-08 13:46:41.049: W/CameraBase(7884): Camera service died!
04-08 13:46:41.049: W/CameraBase(7884): mediaserver's remote binder Camera object died
04-08 13:46:41.049: E/Camera(7884): Error 100

为什么会这样?有什么想法吗?

0 个答案:

没有答案