最近项目条码扫描要改为横屏,网上所搜了一下,然后发现我写的需要改动几行代码就可以了,还是很给力的。

如未查看之前的代码,请移步:

基于Zxing的二维码生成和二维码扫描

修改下面写代码就可以实现横屏条码扫描了

具体代码修改如下:

1、修改 activity配置文件

  1. <activity
  2. android:name=".CaptureActivity"
  3. android:configChanges="orientation|keyboardHidden"
  4. android:label="@string/app_name"
  5. android:screenOrientation="portrait"
  6. android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
  7. android:windowSoftInputMode="stateAlwaysHidden" >
  8. </activity>

android:screenOrientation="portrait" 是关键 默认是landscape

2、修改CameraConfigurationManager.java中的setDesiredCameraParameters函数,

在    camera.setDisplayOrientation(90);

改成    camera.setDisplayOrientation(0);

3、修改CameraManager.java的getFramingRectInPreview()函数中修改成:

  1. rect.left = rect.left * cameraResolution.x / screenResolution.x;
  2. rect.right = rect.right * cameraResolution.x /
  3. screenResolution.x;
  4. rect.top = rect.top * cameraResolution.y / screenResolution.y;
  5. rect.bottom = rect.bottom * cameraResolution.y /
  6. screenResolution.y;

4、修改DecodeHandler.java中的decode函数,

  1. //    byte[] rotatedData = new byte[data.length];
  2. //    for (int y = 0; y < height; y++) {
  3. //        for (int x = 0; x < width; x++)
  4. //            rotatedData[x * height + height - y - 1] = data[x + y * width];
  5. //    }
  6. //    int tmp = width; // Here we are swapping, that's the difference to #11
  7. //    width = height;
  8. //    height = tmp;
  9. //
  10. PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(data, width, height);

然后修改函数中的变量,将rotatedData修改成data;

这样就能够实现横屏扫描了。

如果还需要改动扫描框的大小需要去CameraManager类里面改动:

  1. //改变扫描框的最大、最小长宽
  2. private static final int MIN_FRAME_WIDTH = 240;
  3. private static final int MIN_FRAME_HEIGHT = 240;
  4. private static final int MAX_FRAME_WIDTH = 720;
  5. private static final int MAX_FRAME_HEIGHT = 480;

好了,这样就可以很简单的是实现横屏扫描了。

基于Zxing的二维码的二维码扫描之横屏扫描的更多相关文章

  1. 【转】 Android 基于google Zxing实现对手机中的二维码进行扫描--不错

    原文网址:http://blog.csdn.net/xiaanming/article/details/14450809 转载请注明出处:http://blog.csdn.net/xiaanming/ ...

  2. 基于zxing的二维码(网格)扫描

    基于zxing的二维码(网格)扫描 前言:对于二维码扫描我们使用的是开源框架Zxing或者Zbar,这里使用基于zxing的二维码扫描,类似支付宝网格扫描, 二维码原理介绍: 二维码是用某种特定的几何 ...

  3. 基于ZXing.Net生成一维二维码

    新阁教育-喜科堂付工原创 最近很多小伙伴对一维码.二维码比较感兴趣,今天主要给大家分享一个C#生成条形码和二维码的案例. C#作为一个高级语言,特点就是快! 我们使用的是开源库ZXing,ZXing是 ...

  4. Android 基于google Zxing实现对手机中的二维码进行扫描

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/14450809 有时候我们有这样子的需求,需要扫描手机中有二维码的的图片,所以今天实现的 ...

  5. .NET使用ZXing.NET生成中间带图片的二维码

    很久之前就有写这样的代码了,只是一直没记录下来,偶然想写成博客. 把之前的代码封装成函数,以方便理解以及调用. 基于开源的 ZXing.NET 组件,代码如下: 先添加对ZXing.NET的引用,然后 ...

  6. 基于SignalR的消息推送与二维码描登录实现

    1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...

  7. C#使用zxing,zbar,thoughtworkQRcode解析二维码,附源代码

    最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间 做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助. zxing是谷歌 ...

  8. ZXing拍摄代码扫描之后以区分一维码、二维码、其他代码

    我怎么有二维码没有联系,最近遇到一个问题,,如何推断条码扫描到一维代码或者二维代码,辛苦了一个下午下班后自己,加上网上跟踪信息. 总结出两种方式能够解决该问题(推荐採用另外一种方式): 1.改动源代码 ...

  9. 在云平台上基于Go语言+Google图表API提供二维码生成应用

    二维码能够说已经深深的融入了我们的生活其中.到处可见它的身影:但通常我们都是去扫二维码, 曾经我们分享给朋友一个网址直接把Url发过去,如今我们能够把自己的信息生成二维码再分享给他人. 这里就分享一下 ...

随机推荐

  1. 【ELK】之Kibana使用

    GET _search { "query": { "match_all": {} } } GET _cat/indices GET elk- GET /elk- ...

  2. Python第一天:python2.x和python3.x的区别

    查看Python版本 # python -V Python2.7.5是centos7中默认安装的Python [root@localhost ~]# python -V Python [root@lo ...

  3. yum安装下的nginx,如何添加模块,和添加第三方模块

    需求:生产有个接口是通过socket通信.nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信. 实现方法:Centos7.2下yum直接安装的nginx, ...

  4. beautifulSoup《转》

    beautifulSoup基本用法及find选择器 总结来源于官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.h ...

  5. 学习 MeteoInfo二次开发教程(五)

    1.ActiveMapFrame部分没有大问题,按教程来就行. private void SetMapView()和private void ActiveMapFrameChanged(object ...

  6. Vue非父子组件之间的传值

    1.新建一个js文件  然后引入vue 实例化vue 最后暴露这个实例:实例化Vue对象的时候名称要小写,大写控制台报错,我也不知道什么原因: 2.在要广播的地方引入刚才定义的实例: 3通过VueEm ...

  7. 九、非主体机构元素——header元素、footer元素、address元素、网页编排

    header元素 一般用来放置整个页面的标题,比如说一个新闻页面,header一般放新闻的标题,如果是一个官方网址,一般header用来放logo和网站导航. <!DOCTYPE html> ...

  8. Chrome 插件安装技巧

    参考http://blog.csdn.net/shiyaru1314/article/details/49303317 最近在学习WEBAPI  由于没有界面可以调试,需要安装Chrome中的插件 P ...

  9. redis-单线程架构

    单线程模型: redis中的数据结构并不全是简单的kv,还有list.hash等复杂的结构,这些结构很可能会进行细粒度的操作,比如在很长的列表偶棉添加一个元素,在hash当中或者删除一个对象,这样的一 ...

  10. 2008nian元旦

    我要做---->> 控制财务状况---1记账 2 炒股或基金 3预算 锻炼---每次要达到锻炼的效果 学习计划-- 1报班架构 2 项目管理 3读书 爱好---做饭,收拾整理 职业规划. ...