当前位置: 代码迷 >> Android >> Android Zxing整合扫描区域 优化取图速度
  详细解决方案

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

热度:76   发布时间:2016-04-28 05:50:42.0
Android Zxing调整扫描区域 优化取图速度

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

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

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

 

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

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

//  private static final int MIN_FRAME_WIDTH = 240;//  private static final int MIN_FRAME_HEIGHT = 240;//  private static final int MAX_FRAME_WIDTH = 480;//  private static final int MAX_FRAME_HEIGHT = 360;


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

 

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

以下是原本Demo中提供的

 /**   * Calculates the framing rect which the UI should draw to show the user where to place the   * barcode. This target helps with alignment as well as forces the user to hold the device   * far enough away to ensure the image will be in focus.   *   * @return The rectangle to draw on screen in window coordinates.   */  public Rect getFramingRect() {    Point screenResolution = configManager.getScreenResolution();    if (framingRect == null) {      if (camera == null) {        return null;      }            //原生      int width = screenResolution.x * 3 / 4;      if (width < MIN_FRAME_WIDTH) {        width = MIN_FRAME_WIDTH;      } else if (width > MAX_FRAME_WIDTH) {        width = MAX_FRAME_WIDTH;      }      int height = screenResolution.y * 3 / 4;      if (height < MIN_FRAME_HEIGHT) {        height = MIN_FRAME_HEIGHT;      } else if (height > MAX_FRAME_HEIGHT) {        height = MAX_FRAME_HEIGHT;      }      int leftOffset = (screenResolution.x - width) / 2;      int topOffset = (screenResolution.y - height) / 2;      framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);      Log.d(TAG, "Calculated framing rect: " + framingRect);    }    return framingRect;  }

 

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

  public Rect getFramingRect() {    Point screenResolution = configManager.getScreenResolution();    if (framingRect == null) {      if (camera == null) {        return null;      }          //修改之后      int width = screenResolution.x * 7 / 10;    int height = screenResolution.y * 7 / 10;        int leftOffset = (screenResolution.x - width) / 2;    int topOffset = (screenResolution.y - height) / 3;    framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);                  Log.d(TAG, "Calculated framing rect: " + framingRect);    }    return framingRect;  }

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

 

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

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

 

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

希望对您有用

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

1楼panshang1994昨天 10:25
学习了
  相关解决方案