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

GitHub 加速计划 / zx / zxing
12
1
下载
ZXing ("Zebra Crossing") barcode scanning library for Java, Android
最近提交(Master分支:4 个月前 )
50799640 Bumps [org.apache.maven.plugins:maven-release-plugin](https://github.com/apache/maven-release) from 3.1.1 to 3.2.0. - [Release notes](https://github.com/apache/maven-release/releases) - [Commits](https://github.com/apache/maven-release/compare/maven-release-3.1.1...maven-release-3.2.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-release-plugin dependency-version: 3.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 1 个月前
132ba33d Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 1 个月前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐