Zxing 是google提供的二维码扫描工程
Demo本身默认的扫图区域最大只有 360*480 需要拉开很远的距离才能将整个二维码扫描到
因此需要我们自己调整取图大小
在CameraManager.java这个类中进行调整
默认的大小是 以下这4个参数
1
2
3
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中提供的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/**
* 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;
}
|
我为了适配不同的屏幕大小将代码改成了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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
当然...取图改的这么大 会多占一点内存....相应的扫描的时候快得多