Android Zxing调整扫描区域 优化取图速度

Zxing 是google提供的二维码扫描工程

Demo本身默认的扫图区域最大只有 360*480    需要拉开很远的距离才能将整个二维码扫描到

因此需要我们自己调整取图大小

 

在CameraManager.java这个类中进行调整

默认的大小是 以下这4个参数 

  1. //  private static final int MIN_FRAME_WIDTH = 240;  
  2. //  private static final int MIN_FRAME_HEIGHT = 240;  
  3. //  private static final int MAX_FRAME_WIDTH = 480;  
  4. //  private static final int MAX_FRAME_HEIGHT = 360;  


根据屏幕大小调整      大家可以增大这些数值 : 最小的宽 高    ; 最大宽高

 

参数实际在 getFramingRect() 方法中起作用

以下是原本Demo中提供的

  1. /** 
  2.   * Calculates the framing rect which the UI should draw to show the user where to place the 
  3.   * barcode. This target helps with alignment as well as forces the user to hold the device 
  4.   * far enough away to ensure the image will be in focus. 
  5.   * 
  6.   * @return The rectangle to draw on screen in window coordinates. 
  7.   */  
  8.  public Rect getFramingRect() {  
  9.    Point screenResolution = configManager.getScreenResolution();  
  10.    if (framingRect == null) {  
  11.      if (camera == null) {  
  12.        return null;  
  13.      }  
  14.        
  15.      //原生  
  16.      int width = screenResolution.x * 3 / 4;  
  17.      if (width < MIN_FRAME_WIDTH) {  
  18.        width = MIN_FRAME_WIDTH;  
  19.      } else if (width > MAX_FRAME_WIDTH) {  
  20.        width = MAX_FRAME_WIDTH;  
  21.      }  
  22.      int height = screenResolution.y * 3 / 4;  
  23.      if (height < MIN_FRAME_HEIGHT) {  
  24.        height = MIN_FRAME_HEIGHT;  
  25.      } else if (height > MAX_FRAME_HEIGHT) {  
  26.        height = MAX_FRAME_HEIGHT;  
  27.      }  
  28.      int leftOffset = (screenResolution.x - width) / 2;  
  29.      int topOffset = (screenResolution.y - height) / 2;  
  30.      framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);  
  31.      Log.d(TAG, "Calculated framing rect: " + framingRect);  
  32.    }  
  33.    return framingRect;  
  34.  }  

 

我为了适配不同的屏幕大小将代码改成了

  1. public Rect getFramingRect() {  
  2.   Point screenResolution = configManager.getScreenResolution();  
  3.   if (framingRect == null) {  
  4.     if (camera == null) {  
  5.       return null;  
  6.     }  
  7.       
  8.   //修改之后    
  9.   int width = screenResolution.x * 7 / 10;  
  10.   int height = screenResolution.y * 7 / 10;  
  11.     
  12.   int leftOffset = (screenResolution.x - width) / 2;  
  13.   int topOffset = (screenResolution.y - height) / 3;  
  14.   framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);  
  15.       
  16.       
  17.     Log.d(TAG, "Calculated framing rect: " + framingRect);  
  18.   }  
  19.   return framingRect;  
  20. }  

宽高 我占据了屏幕的   7/10
当然...取图改的这么大   会多占一点内存....相应的扫描的时候快得多

 

以上是实际读取图片的大小

实际的界面美化 在ViewfinderView 这个类当中进行绘制

 

不足之处请在下方留言  谢谢

希望对您有用

资源下载地址:http://download.csdn.net/detail/aaawqqq/7281577

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值