下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】androidzxing4.7.1横屏改竖屏screenOrientationlandscapetoportrait
项目中需要用到条码扫描功能,花了小半天时间才把zxing整合到项目中。以下说下整合的经验:1)从github上下载zxing-master项目,项目中主要有3个模块android、android-core、core,其中android-core,core是android模块依赖的librarymodule.android模块的最新版本号为4.7.1,android-core和core的版本号为3.1.1.2)我用的ide是androidstudio,使用gradle进行项目管理。首先在项目中导入android模块,命名为zxing,在build.gradle中加入依赖
dependencies{
compile'com.google.zxing:android-core:3.1.0'
compile'com.google.zxing:core:3.1.0'
}注:由于gradle中3.1.1版本号编译时说找不到,只好用3.1.0版本。3)运行zxing模块,可以在真机上快速跑起来,扫描功能也很正常。现在主要的任务就是把代码进行精简,把里面不需要的资源文件及java文件删除,最后确保扫描功能还能正常使用就可以了。基本上保留根目录下的几个文件和camera整个目录的内容就差不多了,什么history,share,wifi之类的统统都用不着。还有res下的大部分内容也需要清理,activity只保留CaptureActivity就够了,把capture.xml中不需要的布局内容也可以删除掉。4)把zing模块改为library类型,在现有的application的build.gradle中加入依赖关系就可以了,在androidManifest中加入CaptureActivity,然后调用试试。结果发现zxing模块中的部分方法没有定义为public,访问不到,改完这个问题后又发现会有常量错,据说library项目在studio中编译是R资源文件的内容不会加final导致。解决了之后,程序能运行了,但是本来有的扫描框却不见了,诡异啊!无奈,最后只好把zxing模块内容直接拷贝到当前跑的模块中。最后一切运行正常。5)由于我的项目是竖屏操作的,而zxing是横屏的,为这个事情折腾了很久,在stackoverflow上搜到的答案大多都是适合老版本的操作,几乎找不到针对最新版4.7.1的。花了大半天的时间最后终于解决了。以下是解决的步骤。
5.1)AndroidManifest中CaptureActivity的screenOrientation属性改为portrait
5.2)CaptureActivity中把onResume方法中的//
if(prefs.getBoolean(PreferencesActivity.KEY_DISABLE_AUTO_ORIENTATION,true)){//
setRequestedOrientation(getCurrentOrientation());//
}else{//
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);//
}这段注释掉,在onCreate方法的最后添加:
if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
5.3)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;
5.4)CameraConfigurationManager的setDesiredCameraParameters方法的camera.setParameters(parameters);之前添加:
camera.setDisplayOrientation(90);
5.5)DecodeHandler的privatevoiddecode(byte[]data,intwidth,intheight)方法中PlanarYUVLuminanceSourcesource=activity.getCameraManager().buildLuminanceSource(data,width,height);注释掉,改为:
byte[]rotatedData=newbyte[data.length];
for(inty=0;y<height;y++){
for(intx=0;x<width;x++)
rotatedData[x*height+height-y-1]=data[x+y*width];
}
inttmp=width;
width=height;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年水保项目水资源优化配置咨询合同3篇
- 二零二五年度新能源技术开发与合作合同
- 泰州市2025年度存量房买卖合同样本2篇
- 二零二五年房屋买卖过户合同续约范本5篇
- 2025年行政单位土地资源转让合同范本3篇
- 二零二五年度矿区复绿分包合同4篇
- 二零二五年度绿化带维护服务合同4篇
- 2024版离婚后房产权益分配合同版B版
- 2025年温室大棚蔬菜种植项目风险管理咨询合同3篇
- 2025版绿色能源项目租赁及运营服务合同4篇
- 常用静脉药物溶媒的选择
- 2023-2024学年度人教版一年级语文上册寒假作业
- 当代西方文学理论知到智慧树章节测试课后答案2024年秋武汉科技大学
- 2024年预制混凝土制品购销协议3篇
- 2024-2030年中国高端私人会所市场竞争格局及投资经营管理分析报告
- GA/T 1003-2024银行自助服务亭技术规范
- 《消防设备操作使用》培训
- 新交际英语(2024)一年级上册Unit 1~6全册教案
- 2024年度跨境电商平台运营与孵化合同
- 2024年电动汽车充电消费者研究报告-2024-11-新能源
- 湖北省黄冈高级中学2025届物理高一第一学期期末考试试题含解析
评论
0/150
提交评论