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 这个类当中进行绘制

GitHub 加速计划 / zx / zxing
7
1
下载
ZXing ("Zebra Crossing") barcode scanning library for Java, Android
最近提交(Master分支:3 个月前 )
8944e607 4 个月前
6ea3726b Bumps `spring.version` from 6.1.5 to 6.1.8. Updates `org.springframework:spring-test` from 6.1.5 to 6.1.8 - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.5...v6.1.8) Updates `org.springframework:spring-web` from 6.1.5 to 6.1.8 - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.5...v6.1.8) --- updated-dependencies: - dependency-name: org.springframework:spring-test dependency-type: direct:development update-type: version-update:semver-patch - dependency-name: org.springframework:spring-web dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sean Owen <srowen@gmail.com> 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐