zxing二维码扫描黑屏解决方案

2016/11/29 16:50:43 人评论 次浏览 分类:程序优化

zxing二维码扫描黑屏解决方案:

 第一步首先确认相机的权限是否开启,没有的话在AndroidManifest.xml 中添加<uses-permission android:name="android.permission.CAMERA" />

第二步看你的相机是否支持闪光灯,我碰到的就是硬件不支持闪光灯引起的初始化摄像头出错;

扫面界面先出现正常页面,一闪就是黑屏,程序也也不报错。初步判断应该就是初始化摄像头时出的问题,

 

跟断点找见的问题:CaptureActivity中的下面方法抛出异常,在178会返回不再执行




问题在openDriver里面出的异常,在CameraManager中跟断点发现在

150行就返回,




在CameraConfigurationManager 中的的89行出新运行时异常,基本上就可以判断出在设置parameters的时候出现的错误,注释掉改行程序运行,摄像头能正常显示,也不再黑屏。但是在二维码扫描的时候发现不能扫描二维码。

89行的代码放开,分行注释84,85,发现注释掉84行时程序正常,二维码也能正常扫描


89行的代码放开,分行注释84,85,发现注释掉84行时程序正常,二维码也能正常扫描

 

分析84行中的代码 就两个键值对flash-valueflash-mode

 

 

通过在不同的机型上调试发现 flash-mode中不一定有支持:

Parameters parameters = camera.getParameters();

List<String >  flash =parameters.getSupportedFlashModes();

flash中 的值在没有闪光灯中的值为null

在带有闪光灯中的值长度为5值分别如下

 

总结

在不支持flash-mode的机型中设置就会抛出异常,解决方案就是注释掉  setFlash(parameters);这一行 。

万一你需要在二维码中控制闪光灯可以添加如下方法:

    public void flicker(boolean flag) {

       Parameters parameters = camera.getParameters();

       List<String >  flash =parameters.getSupportedFlashModes();

       if (flag) {

             if(flash!=null&&flash.contains(Parameters.FLASH_MODE_TORCH)){

           parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);// 开启

           camera.setParameters(parameters);

       }else {

           Log.v("vlaue", "不支持闪光灯");

       }

       } else {

       if(flash!=null&&flash.contains(Parameters.FLASH_MODE_OFF)){

           parameters.setFlashMode(Parameters.FLASH_MODE_OFF);// 关闭

           camera.setParameters(parameters);

           }

           else {

              Log.v("vlaue", "不支持闪光灯");

           }

       }

    }

相关教程

  • 安居客Android项目架构演进

    入职安居客三年从工程师到Team Leader,见证了Android团队一路走来的发展历程。因此有心将这些记录下来与大家分享,也算是对自己三年来一部分工作的总结。希望对大家有所帮助,更希望能得到大家宝贵的建议。一、三网合并三年前入职时安居客在业务上刚完成了三网合并(新房、二…

    2017/2/27 11:10:18
  • [阿里聚安全出品]史上最全Android 开发和安全系列工具

    1.动态分析工具Android Hooker - 此项目提供了各种工具和应用程序,可用于自动拦截和修改目标应用程序所做的任何API调用。AppAudit- 在线工具(包括一个API)使用动态和静态分析检测应用程序中的隐藏数据泄漏。BareDroid- 在Android设备上大规模支持裸机分析。CuckooDroid- Cu…

    2017/2/20 9:06:09
  • AndroidApp性能优化

    性能优化Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航。由此,它必须是高效的。电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了。由于续航对用户的重要性,当电量耗损陡增时,意味这用户迟早会发现是由于你的程序。虽然这份…

    2016/10/8 14:00:57

共有访客发表了评论 网友评论

验证码: 看不清楚?