Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Zxing調整掃描區域 優化取圖速度

Android Zxing調整掃描區域 優化取圖速度

編輯:關於Android編程

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. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved