Android使用Zxing扫描二维码过程解决三星note1竖屏后花屏问题

来源:互联网 发布:mysql 存储过程 函数 编辑:程序博客网 时间:2024/04/30 09:22


 开发一个安卓手机上的软件,其中用到了二维码扫描的功能,采用了google开源项目zxing。zxing的android演示例子在公司所有测试机通过,但是在三星note1上测试时发现花屏,后找到解决办法!!!

        摄像头采集的数据在屏幕预览时出现花屏往往是因为摄像头不支持preview的尺寸所导致。检查代码中什么地方调用了setPreviewSize方法,再往前追踪,在实机测试时打印出实际使用的preview的尺寸,终于发现在竖屏状态下改尺寸被设置为980*800,这都是高清视频的标准了。可恶的三星,明明不支持,但在camera的supportedPreviewSizes里却都罗列了出来。

(1)

找到CameraConfigurationManager.java文件
在screenResolution = new Point(display.getWidth(), display.getHeight());这句之后增加以下代码

Point screenResolutionForCamera = new Point();
        screenResolutionForCamera.x = screenResolution.x;
        screenResolutionForCamera.y = screenResolution.y;
        // preview size is always something like 480*320, other 320*480
        if (screenResolution.x < screenResolution.y) {
        screenResolutionForCamera.x = screenResolution.y;
        screenResolutionForCamera.y = screenResolution.x;
        }
再更改cameraResolution = getCameraResolution(parameters, screenResolution);为cameraResolution = getCameraResolution(parameters, screenResolutionForCamera);

以上为我的代码修改方法:可以实现


    (2)
     知道原因就好办了,找到CameraConfigurationManager,将静态变量MAX_PREVIEW_PIXELS从
     private static final int MAX_PREVIEW_PIXELS = 1280 * 800;
      修改为:
private static final int MAX_PREVIEW_PIXELS = 640 * 480;

     这个一般都能支持了吧?改完连接note1,测试,一切OK。搞定收功!
     ps:
    这个是在zxing2.2版本上实现的。如果在zxing1.6的版本上,应该修改findBestPreviewSizeValue方法, 思路是一样的.

0 0