首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未调用摄像头onPreviewFrame

未调用摄像头onPreviewFrame
EN

Stack Overflow用户
提问于 2011-08-12 23:23:03
回答 4查看 15.5K关注 0票数 24

使用Camera.PreviewCallback实现时,在初始化相机并启动预览(Camera.startPrevew())之后,调用onPreviewFrame没有问题。问题是,如果我使用MediaRecorder进行视频录制,则不会再调用onPreviewFrame。

我知道使用MediaRecorder录制视频会导致Camera.PreviewCallback停止,但是为什么不能重启呢?

我尝试了重置摄像头预览回调(setPreviewCallback( callback ))并重新启动startPreview,但当我有预览时,没有调用onPreviewFrame。

EN

回答 4

Stack Overflow用户

发布于 2013-03-12 18:17:15

您必须在surfaceChanged方法中调用setPreviewCallback,而不仅仅是在surfaceCreated中。

代码语言:javascript
复制
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
if (mHolder.getSurface() == null){
  return;
}

try {
    mCamera.stopPreview();
} catch (Exception e){
  // ignore: tried to stop a non-existent preview
}

try {
    mCamera.setPreviewCallback(this);
    mCamera.setPreviewDisplay(mHolder);
    mCamera.startPreview();

} catch (Exception e){
    Log.d(TAG, "Error starting camera preview: " + e.getMessage());
}
}
票数 17
EN

Stack Overflow用户

发布于 2013-05-16 04:24:26

我也遇到过类似的问题,请参阅

setOneShotPreviewCallback not hitting onPreviewFrame() in callback

我发现在调用Camera#unlock()准备MediaRecorder之后,在设置预览回调之前需要调用Camera#reconnect()。这是因为Camera.unlock()会将摄像头从进程中分离出来,以便让MediaRecorder连接到摄像头。

http://developer.android.com/reference/android/hardware/Camera.html#unlock()

在我的调查中,我还发现,如果您使用one shot方法以外的其他方法设置任何预览回调,则必须在调用Camera#reconnect()之后重置所有这些回调。所以,简单地说:

代码语言:javascript
复制
mCamera.unlock();
//set up MediaRecorder
mCamera.reconnect();
mCamera.setPreviewCallback(mCallback);
//or whatever callback method you want to use
//and even if you've set this callback already

我希望这对你有帮助!

票数 10
EN

Stack Overflow用户

发布于 2011-09-14 12:27:14

您应该在previewCallBacks()接口的新实例化中调用它,如下所示

代码语言:javascript
复制
public void surfaceCreated(SurfaceHolder holder) {
        // if (mediaRecorder == null) {
        try {
            camera = Camera.open();
            camera.setPreviewCallback(new PreviewCallback() {
                public void onPreviewFrame(byte[] _data, Camera _camera) {
                }
            }
        }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7042377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档