zoukankan      html  css  js  c++  java
  • 基于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;  

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

     

  • 相关阅读:
    IIS Express 配置缓存位置
    Docker Demo on Docker
    前端的哪些坑
    如何在container中编译dotnet的eShopOnContainers
    JQuery 常用的那些东西
    jQuery选择器大全
    Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405
    WPF 通过透明度遮罩和变换制作倒影效果
    Ons 让人欲哭无泪问题,官方介绍不详
    如何转换任何配置文件 文件中的内容
  • 原文地址:https://www.cnblogs.com/zmc/p/9134808.html
Copyright © 2011-2022 走看看