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


 开发一个安卓手机上的软件,其中用到了二维码扫描的功能,采用了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方法, 思路是一样的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值