基于Zxing的二维码的二维码扫描之横屏扫描

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

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

基于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、修改CameraConfigurationManag er.java中的setDesiredCameraParamete rs函数,

在    camera.setDisplayOrientation(90);

改成    camera.setDisplayOrientation(0);


3、修改CameraManager.java的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;

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

//    byte[] rotatedData = new byte[data.length];
//    for (int y = 0; y < height; y++) {
//        for (int x = 0; x < width; x++)
//            rotatedData[x * height + height - y - 1] = data[x + y * width];
//    }
//    int tmp = width; // Here we are swapping, that's the difference to #11
//    width = height;
//    height = tmp;
//    
    PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(data, width, height);
然后修改函数中的变量,将rotatedData修改成data;

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

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

//改变扫描框的最大、最小长宽
	private static final int MIN_FRAME_WIDTH = 240;
	private static final int MIN_FRAME_HEIGHT = 240;
	private static final int MAX_FRAME_WIDTH = 720;
	private static final int MAX_FRAME_HEIGHT = 480;
好了,这样就可以很简单的是实现横屏扫描了。




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值