小编Bob*_*ick的帖子

Android相机surfaceChanged被不断调用

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

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){
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上,它是CameraDemo的例子.Android CameraDemo示例

问题是,surfaceCreated只被调用一次(它的方式),但是SurfaceChanged被不断地调用(而不是只调用一次,或者当表面发生变化时),我相信这就是为什么onPreviewFrame永远不会被调用的原因.相机输入显示在屏幕上,似乎工作正常,但事实并非如此.

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

我一直在环顾四周,我相信这可能是这个stackoverflow未解决的问题另一个stackoverflow未解决的问题和这个code.google案例背后的真正原因.最后一个案例有一个"解决方案",但它对我不起作用.

那么,为什么SurfaceChanged一直在输入以及如何解决它的任何想法?

camera android callback preview surfaceview

5
推荐指数
1
解决办法
2499
查看次数

标签 统计

android ×1

callback ×1

camera ×1

preview ×1

surfaceview ×1