Android Zxing调整扫描区域 优化取图速度
Zxing是google提供的二维码扫描工程
Demo本身默认的扫图区域最大只有360*480需要拉开很远的距离才能将整个二维码扫描到
因此需要我们自己调整取图大小
在CameraManager.java这个类中进行调整
默认的大小是以下这4个参数
[html]viewplaincopy在CODE上查看代码片派生到我的代码片
//privatestaticfinalintMIN_FRAME_WIDTH=240;
//privatestaticfinalintMIN_FRAME_HEIGHT=240;
//privatestaticfinalintMAX_FRAME_WIDTH=480;
//privatestaticfinalintMAX_FRAME_HEIGHT=360;
根据屏幕大小调整大家可以增大这些数值:最小的宽高;最大宽高
参数实际在getFramingRect()方法中起作用
以下是原本Demo中提供的
[java]viewplaincopy在CODE上查看代码片派生到我的代码片
/**
*CalculatestheframingrectwhichtheUIshoulddrawtoshowtheuserwheretoplacethe
*barcode.Thistargethelpswithalignmentaswellasforcestheusertoholdthedevice
*farenoughawaytoensuretheimagewillbeinfocus.
*
*@returnTherectangletodrawonscreeninwindowcoordinates.
*/
publicRectgetFramingRect(){
PointscreenResolution=configManager.getScreenResolution();
if(framingRect==null){
if(camera==null){
returnnull;
}
//原生
intwidth=screenResolution.x*3/4;
if(width<MIN_FRAME_WIDTH){
width=MIN_FRAME_WIDTH;
}elseif(width>MAX_FRAME_WIDTH){
width=MAX_FRAME_WIDTH;
}
intheight=screenResolution.y*3/4;
if(height<MIN_FRAME_HEIGHT){
height=MIN_FRAME_HEIGHT;
}elseif(height>MAX_FRAME_HEIGHT){
height=MAX_FRAME_HEIGHT;
}
intleftOffset=(screenResolution.x-width)/2;
inttopOffset=(screenResolution.y-height)/2;
framingRect=newRect(leftOffset,topOffset,leftOffset+width,topOffset+height);
Log.d(TAG,"Calculatedframingrect:"+framingRect);
}
returnframingRect;
}
我为了适配不同的屏幕大小将代码改成了
[java]viewplaincopy在CODE上查看代码片派生到我的代码片
publicRectgetFramingRect(){
PointscreenResolution=configManager.getScreenResolution();
if(framingRect==null){
if(camera==null){
returnnull;
}
//修改之后
intwidth=screenResolution.x*7/10;
intheight=screenResolution.y*7/10;
intleftOffset=(screenResolution.x-width)/2;
inttopOffset=(screenResolution.y-height)/3;
framingRect=newRect(leftOffset,topOffset,leftOffset+width,topOffset+height);
Log.d(TAG,"Calculatedframingrect:"+framingRect);
}
returnframingRect;
}
宽高我占据了屏幕的7/10
当然...取图改的这么大会多占一点内存....相应的扫描的时候快得多
以上是实际读取图片的大小
实际的界面美化在ViewfinderView这个类当中进行绘制
不足之处请在下方留言谢谢
希望对您有用