Android camera surfaceChanged不断被调用

标签 android callback camera surfaceview preview

我正在开发一个使用相机的应用程序。我做了这样的预览课:

public class MyPreview extends SurfaceView implements SurfaceHolder.Callback, Camera.Preview Callback{
    ...

    public void surfaceCreated(SurfaceHolder holder){
    ...
    mCamera.setPreviewCallback(this);
    ...
    }

    public void surfaceDestroyed(SurfaceHolder holder){
    ...
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h){
    ...
    }

    public void onPreviewFrame(byte[] data, Camera camera){
    ...
    }
}

基本上就是CameraDemo的例子。 Android CameraDemo Example

问题是,surfaceCreated 只被调用一次(它应该的方式),但是 surfaceChanged 被不断地调用(而不是只调用一次,或者当表面改变时),我相信这就是为什么 onPreviewFrame 永远不会被调用的原因.摄像头画面显示在屏幕上,看起来工作正常,但实际上并非如此。

有趣的是,它在 Android 2.x 上运行良好,而问题只出现在 Android 4.1 上。 (我没有在其他设备上测试过)

我一直在四处寻找,我相信这可能是这 stackoverflow unsolved question 背后的真正原因还有这个another stackoverflow unsolved question还有这个code.google case .最后一个案例有一个“解决方案”,但它对我不起作用。

那么,对于为什么一直输入 surfaceChanged 以及如何解决它有什么想法吗?

最佳答案

试试这些教程 http://android-er.blogspot.ru/2010/12/implement-takepicture-function-of.html .也可以尝试查看该周期的先前文章。

关于Android camera surfaceChanged不断被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14099286/

相关文章:

android - 如何在窗口管理器参数中添加 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES?

android - 如何使用输入流读取器从android内部存储器加载文件

android - 带有操作按钮的 Flutter 本地通知

C++:路由到成员函数的静态函数包装器?

c# - 处理多相机捕获 UWP

android - 如何在非相机应用程序中使用 Android 相机 API?

android - 在 Android 中找不到类 'com.jayway.android.robotium.solo.Solo'

javascript - 使用 JavaScript/jQuery 的双重或多重回调设计模式

javascript - 当状态更改发生在 ReactJS 中的不同 .js 文件的组件中时,如何更新我的 useEffect Hook ?

android - 如何在 Android 编程中从相机应用程序捕获预览图像帧?