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这个类当中进行绘制

不足之处请在下方留言谢谢

希望对您有用

相关推荐