How to increase scanning area size in zxing

2019-01-19 04:07发布

问题:

Hii everyone currently iam working on scanning qr code from my app and i have used zxing library and it's working good and my problem is in my galaxy s4 mobile the scanning area is very small

Please help me

thanks in advance

回答1:

The CameraManager class has two constants defined MIN_FRAME_WIDTH and MIN_FRAME_HEIGHT. You should modify them as desired and everything should work:

private static final int MIN_FRAME_WIDTH = 240;  // (your desired value here)
private static final int MIN_FRAME_HEIGHT = 240; // (your desired value here)


回答2:

I know it is too much late but help for others just go to camera manager class and paste this code on replacement of given method it works for all types of screens

    public Rect getFramingRect() {
    if (framingRect == null) {
    if (camera == null) {
    return null;
    }
    Point screenResolution = configManager.getScreenResolution();
    int width = screenResolution.x * 3 / 4;

    int height = screenResolution.y * 3 / 4;
    Log.v("Framing rect is : ", "width is "+width+"   and height is "+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;
   }


回答3:

public Rect getFramingRect() {
if (framingRect == null) {
  if (camera == null) {
    return null;
  }
  Point screenResolution = configManager.getScreenResolution();
        int screenx = screenResolution.x;
        int screeny = screenResolution.y;
        int width, height, left, top;
        if (screenx > screeny) {
            width = (int) (screenx * 12.5 / 100);
            height = (int) (screeny * 25 / 100);
            left = (int) screenx * 83 / 100;
            top = (int) screeny * 75 / 100;
        } else {
            left = (int) (screenx * 12.5 / 100);
            top = (int) (screeny * 25 / 100);
            width = (int) screenx * 83 / 100;
            height = (int) screeny * 75 / 100;
        }
  framingRect = new Rect(left,top, width, height);

  Log.d(TAG, "Calculated framing rect: " + framingRect);
}
return framingRect;
}

Replace the above code in CameraManager.java file this worked for me try this out



回答4:

If you are calling this from another android app, use intent extras SCAN_WIDTH and SCAN_HEIGHT for this.

If you happen to be using phonegap-plugin-barcodescanner (3.0.0 or later), then passing the same intents like xxxxx.scan(onSuccessFunc,onFailFunc,{SCAN_HEIGHT:111,SCAN_WIDTH:222}) will produce the same result. 111 being the height, and 222 being the width.