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

Posted .net

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于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、修改CameraConfigurationManager.java中的setDesiredCameraParameters函数,

 

在    camera.setDisplayOrientation(90);

改成    camera.setDisplayOrientation(0);

 

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

 

[java] view plain copy
 
  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函数,

 

 

[java] view plain copy
 
  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类里面改动:

 

[java] view plain copy
 
  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的二维码的二维码扫描之横屏扫描的主要内容,如果未能解决你的问题,请参考以下文章

Android 基于google Zxing实现二维码条形码扫描,仿微信二维码扫描效果

Android基于Google Zxing实现二维码/条形码扫描生成二维码/条形码

Android扫描二维码(基于华为HMS Core)

android zxing 怎么获得扫码时间

qrcode render 二维码扫描读取

android开发 如何实现扫描本地二维码图片