android - 不调用带缓冲区的 PreviewCallback 和 PreviewCallback

标签 android callback camera

我对 Android 4.0.x 的预览回调有疑问。 我设置了一个摄像头,创建了一个表面以在 previewCallback 事件上显示摄像头图像。一切正常。

但在 Android 4.0.x 中,onPreviewCallbackonPreviewCallbackWithBuffer 都不会被调用。 这个问题有解决方法吗?

我想截屏,不想使用 takePicture() 方式,因为它会短时间卡住实时图像。

最佳答案

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

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());
    }
}

关于android - 不调用带缓冲区的 PreviewCallback 和 PreviewCallback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13820781/

相关文章:

android - 如何添加/删除 Artifact 以 gradle Android Studio

java - 如何在 Android 中解析复杂的 json 响应

ios - 快速回调不打印

javascript - 对象中存储的函数的回调

java - 如何在相机中应用自定义滤镜 [Surfaceview Preview]...?

ios - Phonegap ios 相机在设备而非模拟器上失败

android - 从android中的地址获取经纬度

Android 像 Duolingo App 一样水平滑动项目

带有回调的 Javascript 函数,该回调将启动的对象作为参数传递

opencv - 相机平移时的单应性(用于拼接)