教你瘦身zxing(android)
来源:互联网 发布:海康网络球机安装教程 编辑:程序博客网 时间:2024/06/05 12:39
android二维码扫描是APP中常见的功能,最近闲余时间比较多,特意去研究了下,分享出来,欢迎大家一起交流。
(尊重他人的成果,参考了http://www.mobile-open.com/2015/41147.html这篇博文)
zxing项目的下载地址:https://github.com/zxing/zxing
下载来的目录如图,我们有用的就android、android-core两个目录
接下来我们把android这个目录导入到Android Studio中,因为下来的是基于Eclipse的,所以这边我是新建一个项目,然后把项目文件拷贝进去的(至于不懂得怎么拷贝的话,我是无能为力了,请自行百度),考进去后记得在build.gradle文件加上依赖库compile 'com.google.zxing:core:3.3.0',如果你的项目编译不通过,而缺少CameraConfigurationUtils类的话,在android-core里,把它复制过来放在包com.google.zxing.client.android.camera下面。
扫描页面默认是横屏的,但往往我们都是竖屏操作的,首先我们在清单文件AndroidManifest.xml把CaptureActivity改成竖屏android:screenOrientation="portrait",然后在CaptureActivity类的onResume方法中删掉如下代码:
// if (prefs.getBoolean(PreferencesActivity.KEY_DISABLE_AUTO_ORIENTATION, true)) {
// setRequestedOrientation(getCurrentOrientation());
// } else {
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
// }
这样我们就把activity横屏调整过来了,但是相机并没有调整过来,怎么办呢?不要着急,我们在CameraConfigurationManager的setDesiredCameraParameters方法中添加代码:
到了这个步骤,显示算正常了,但是二维码扫描缓慢,一维码扫描不出来,修改CameraManager中getFramingRectInPreview方法:
// rect.left = rect.left * cameraResolution.x / screenResolution.x;
// rect.right = rect.right * cameraResolution.x / screenResolution.x;
// rect.top = rect.top * cameraResolution.y / screenResolution.y;
// rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y;
rect.left = rect.left * cameraResolution.y / screenResolution.x;
rect.right = rect.right * cameraResolution.y / screenResolution.x;
rect.top = rect.top * cameraResolution.x / screenResolution.y;
rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y;
最后在CameraManager中的方法buildLuminanceSource添加如下代码:
到了这里,我们的项目就可以正常扫描了,但是我们发现它的取景框是并不是正方形的,那是因为zxing取景框采用的大小是屏幕的5/8。
所以我们在CameraManager中的方法getFramingRect修改如下:
如果你不想大小限制在5/8,而是其它的话可以进入方法findDesiredDimensionInRange中修改。
至此,zxing条码扫描器已经可以正常竖屏扫描了,剩下的工作就是精简代码了。
至于精简代码,在这里我就不多阐述了,源码我放在https://github.com/linqssonny/Project上面,欢迎大家下载你。
PS:由于这个项目是我集成在一个项目里面的,使用者可以导入module(qrcode、utilslibs)就可使用,用法在MainActivity里面就有。(这个项目里面包含很多常见的工具类、模块,还不是很完善,有问题加我Q:252624617)。
- 教你瘦身zxing(android)
- android合理配置PRODUCT_LOCALES为你的系统瘦身减负
- iOS:教你五分钟集成ZXing
- iOS:教你五分钟集成ZXing
- android zxing
- android zxing
- [Android 之美] 那些你不知道的APK 瘦身,让你的APK更小
- [Android 之美] 那些你不知道的APK 瘦身,让你的APK更小
- [Android 之美] 那些你不知道的APK 瘦身,让你的APK更小
- 为你的ASA瘦身
- 瘦身你的执行文件
- 瘦身你的执行文件
- 瘦身你的执行文件
- 为你的讲话瘦身
- Android APK 瘦身
- Android APK 瘦身处理
- Android-APK瘦身实践
- Android App瘦身
- 第十节 字符菜单的制作
- android 更新sdk23以后,报错提示FloatMath.ceil()和FloatMath.sin()方法不存在
- window删除(卸载)服务
- 安装增强功能
- Maven中的DependencyManagement和Dependencies
- 教你瘦身zxing(android)
- linux ssh key 免密码登陆
- Express中间件之body-parse
- MFC类视图
- Web缓存核心技术点需知
- MapReduce:超大机群上的简单数据处理
- 欢迎使用CSDN-markdown编辑器
- Jquery轻量级幻灯插件-OWL Carousel--支持触屏的移动
- 用cookie实现浏览记录