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 這個類當中進行繪製
不足之處請在下方留言 謝謝