cocos2dx android 二维码扫描

来源:互联网 发布:还珠格格知画结局 编辑:程序博客网 时间:2024/05/17 10:54

用surfaceView作为摄像头的预览,在Activity的onCreate中添加

group = (ViewGroup)getWindow().getDecorView();view = new CaptureView(this);group.addView(view);view.setZOrderMediaOverlay(true);

接着为了解决无预览、遮掉cocos2dx UI等各种问题

在Cocos2dxActivity中替换函数:

    public Cocos2dxGLSurfaceView onCreateView() {    // return new Cocos2dxGLSurfaceView(this);    Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);    glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 8);    return glSurfaceView;    }

在Cocos2dxGLSurfaceView的init中添加以下代码
setZOrderOnTop(true);getHolder().setFormat(PixelFormat.TRANSLUCENT);
在Cocos2dxRenderer的onDrawFrame中使用如下代码:

gl.glDisable(GL10.GL_DITHER);gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);gl.glClearColor(0, 0, 0, 0);gl.glEnable(GL10.GL_CULL_FACE);gl.glShadeModel(GL10.GL_SMOOTH);

之后可以正常使用,但是新的问题来了,在切换场景和遮罩等情况下在屏幕上方会出现白边,经检查发现问题代码是:

gl.glDisable(GL10.GL_DITHER);gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);gl.glClearColor(0, 0, 0, 0);gl.glEnable(GL10.GL_CULL_FACE);gl.glShadeModel(GL10.GL_SMOOTH);
</pre><pre name="code" class="java"><pre name="code" class="java">setZOrderOnTop(true);

于是简单的解决办法是在开启摄像头的时候设置为这些,关闭摄像头的时候还原。


好吧,终于也算解决了,又来新的问题。切换游戏到后台再切到前台后,二维码扫描的cocos2dx  UI不见了!

折腾一天没找到问题在哪,于是打算放开先不管,先学会android(对android没正经学过)

慢慢看着视频,看到FrameLayout的时候视频里有句话说先添加的View在下面,后添加的在上面。而cocos2dx用的就是FrameLayout并且最先添加GLSurfaceView。于是我就开窍了……我将View在GLSurfaceView之前添加到Layout上去,然后,问题解决。





0 0