android Zxing 扫描区域的大小设置和自定义扫描view
自己的项目中,只需要修改:
CameraManager 里面的 MAX_FRAME_WIDTH 、MAX_FRAME_HEIGHT 的值
private static final int MIN_FRAME_WIDTH = 10;
private static final int MIN_FRAME_HEIGHT = 10;
private static final int MAX_FRAME_WIDTH = 800;
private static final int MAX_FRAME_HEIGHT = 800;
原文链接:https://blog.csdn.net/qq_28130037/article/details/51753899
自己改造的Zxing 扩大扫描范围
实现自定义扫描布局 主要是CodeView 里面很详细的代码自定义view
CameraManager里面的四个参数 MIN_FRAME_WIDTH 、MIN_FRAME_HEIGHT、MAX_FRAME_WIDTH、MAX_FRAME_HEIGHT设置中间的扫描框,
你要修改扫描框的大小 然后在CodeView这里面获取扫描框的大小 自己去画一个比扫描框小的框
让用户更好的感觉更快的扫描
在CameraManager里面主要修改
private static final int MIN_FRAME_WIDTH = 240;
private static final int MIN_FRAME_HEIGHT = 240;
private static final int MAX_FRAME_WIDTH = 675;
private static final int MAX_FRAME_HEIGHT = 800;
四个参数的大小修改扫描大小
/**
* Created by smy on 2016/6/23 0023.
* 二维码扫描区域view
*/
public class CodeView extends View {
private Paint paint = null;
private int maskColor;
private int resultColor = 0;
private int frameColor = 0;
private int laserColor = 0;
private int resultPointColor = 0;
private int green = 0;
/**
* 刷新界面的时间
*/
private static final long ANIMATION_DELAY = 10L; /**
* 中间滑动线的最顶端位置
*/
private int slideTop; /**
* 中间滑动线的最底端位置
*/
private int slideBottom;
/**
* 中间那条线每次刷新移动的距离
*/
private static final int SPEEN_DISTANCE = 5; public CodeView(Context context) {
super(context);
init(context);
} public CodeView(Context context, AttributeSet attrs) {
super(context, attrs);
// 初始化这些曾经为性能而不是叫他们在ondraw()每次。
paint = new Paint();
Resources resources = getResources();
maskColor = resources.getColor(R.color.viewfinder_mask);
resultColor = resources.getColor(R.color.result_view);
frameColor = resources.getColor(R.color.viewfinder_frame);
laserColor = resources.getColor(R.color.viewfinder_laser);
resultPointColor = resources.getColor(R.color.possible_result_points);
green = resources.getColor(R.color.text_green); init(context);
} public CodeView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
} private void init(Context context) { } @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//中间的扫描框,你要修改扫描框的大小,去CameraManager里面修改
Rect frame = CameraManager.get().getFramingRect();
if (frame == null) {
return;
}
int width = canvas.getWidth();
int height = canvas.getHeight(); // 画的外部(即外部框架矩形)黑暗
paint.setColor(maskColor);
//
/**
* 想要调节二维码扫描的速度 就要在CameraManager里面调节
* private static final int MIN_FRAME_WIDTH = 240;
private static final int MIN_FRAME_HEIGHT = 240;
private static final int MAX_FRAME_WIDTH = 675;
private static final int MAX_FRAME_HEIGHT = 800;
这四个参数的大小
然后通过Rect frame = CameraManager.get().getFramingRect();获取相机扫描区域的大小
如果只是单纯的用相机的高宽去设置扫描二维码区域会发现扫描比较快 但是二维码扫描区域太大
代码是这样的
// 画的外部(即外部框架矩形)黑暗
paint.setColor(resultBitmap != null ? resultColor : maskColor);
canvas.drawRect(0, 0, width, frame.top, paint);
canvas.drawRect(0, frame.top, frame.left, frame.bottom + 1, paint);
canvas.drawRect(frame.right + 1, frame.top, width, frame.bottom + 1, paint);
canvas.drawRect(0, frame.bottom + 1, width, height, paint);
画出了是和相机一样大小的边框
但是如果为了扫描快一些就要调大相机区域 也要重新画出扫描区域
就要自己画一个比相机小的正方形的扫描区域
*/
//画一个方形 获取相机宽度
int x = frame.right - frame.left;
//上面阴影部分高度 x=height-2*top; 算出top
int top = (height - x) / 2;
//获取下面阴影部分的在y轴的坐标
int botton = x + top;
canvas.drawRect(0, 0, width, top, paint);//最上面的一块透明的背景
canvas.drawRect(0, top, frame.left, botton, paint);//左边的一块透明的背景
canvas.drawRect(frame.right + 1, top, width, botton, paint);//右边的一块透明背景
canvas.drawRect(0, botton, width, height, paint);//最下面的一块透明背景 //画四个角上面的绿线
paint.setColor(green);
paint.setStrokeWidth((float) 3.0); //线宽
paint.setStyle(Paint.Style.FILL);
canvas.drawLine(frame.left - 2, top - 2, frame.left + 50, top - 2, paint);//左上角横着的线
canvas.drawLine(frame.left - 2, top, frame.left - 2, top + 50, paint);//左上角竖着的线 canvas.drawLine(frame.left - 2, botton - 50, frame.left - 2, botton, paint);//左下角竖着的线
canvas.drawLine(frame.left - 2, botton + 2, frame.left + 52, botton + 2, paint);//左下角横着的线 canvas.drawLine(frame.right - 50, top - 2, frame.right + 2, top - 2, paint);//右上角横着的线
canvas.drawLine(frame.right + 2, top, frame.right + 2, top + 50, paint);//右上角竖着的线 canvas.drawLine(frame.right + 2, botton - 50, frame.right + 2, botton + 2, paint);//右下角竖着的线
canvas.drawLine(frame.right - 50, botton + 2, frame.right, botton + 2, paint);//右下角横着的线 //绘制中间的线,每次刷新界面,中间的线往下移动SPEEN_DISTANCE
slideTop += SPEEN_DISTANCE;
if (slideTop >= botton) {
slideTop = top;
}
if (slideTop >= top) {
//绘制中间的线
canvas.drawLine(frame.left, slideTop, frame.right, slideTop, paint);//中间的横线
} else {
canvas.drawLine(frame.left, top + x / 2, frame.right, top + x / 2, paint);//中间的横线
} //只刷新扫描框的内容,其他地方不刷新
postInvalidateDelayed(ANIMATION_DELAY, frame.left, top,
frame.right, botton);
}
}
android Zxing 扫描区域的大小设置和自定义扫描view的更多相关文章
- Android为TV端助力 最简单的自定义圆点view
首先创建一个选择器,用来判断圆点状态,可以根本自己的需求改 <selector xmlns:android="http://schemas.android.com/apk/res/an ...
- 【转】如何调整visio绘图区域尺寸大小
原文网址:http://jingyan.baidu.com/article/948f5924033870d80ff5f9f1.html 在使用microsoft visio软件绘图时,为了绘图的质量和 ...
- Android Zxing调整扫描区域 优化取图速度
Zxing 是google提供的二维码扫描project Demo本身默认的扫图区域最大仅仅有 360*480 须要拉开非常远的距离才干将整个二维码扫描到 因此须要我们自己调整取图大小 在Cam ...
- Android Zxing框架扫描解决扫描框大小,图片压缩问题
在我们是Zxing框架进行二维码扫描的时候,会发现,如今手机随着分辨率的添加.那个扫描框会越来越小,在1920*1280和1280*720还算比較正常.可是三星的几款手机note4,5.S6,等几款手 ...
- Android—ZXing二维码扫描遇到的问题
最近工作中需要开发带有二维码扫描功能的软件(基于开源项目ZXing),遇到的问题记录一下,也希望给大家带来帮助. 1.首先因为扫描要开摄像机所以加权限是一定的,不然后面什么都不能进行 <uses ...
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
Android 高手进阶(21) 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处:http://blog.csdn.net/xiaanming/article/detail ...
- 【转】Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果--不错
原文网址:http://blog.csdn.net/xiaanming/article/details/10163203 转载请注明出处:http://blog.csdn.net/xiaanming/ ...
- Android ZXing 二维码、条形码扫描介绍
本帖最后由 Shims 于 2013-11-9 12:39 编辑 最近公司的Android项目需要用到摄像头做条码或二维码的扫描,Google一下,发现一个开源的 ZXing项目.它提供二维码和条形码 ...
- Android Zxing 转换竖屏扫描且提高识别率
最近的一个Android需要用到扫码功能,用的是Zxing开源库.Zxing的集成就不说了,但是Zxing默认的是横屏扫码,在实际生产中并不适用,需要改为竖屏扫描. 转竖屏步骤: 1>. And ...
随机推荐
- 可恶的 0xc0000005异常
昨天快下班的时候自己写的代码突然跑出了这个异常,,搞的我特别的无语,因为昨天女朋友要过来了,给我出现了这么一个bug,心里很不爽,果断低下班了,另外一个原因就是公司其他人都跑了,每次基本都是我一个人最 ...
- 自动化运维工具----ansible
ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 主要模块以及功能: 1 command 2 user ...
- <spark> error:启动spark后查看进程,进程中master和worker进程冲突
启动hadoop再启动spark后jps,发现master进程和worker进程同时存在,调试了半天配置文件. 测试发现,当我关闭hadoop后 worker进程还是存在, 但是,当我再关闭spark ...
- Heap Dump (heap=dump)
Heap Dump (heap=dump) 转储堆内容使用heap=dump选项.可以是ASCII或者是二进制格式,根据设定的格式,jhat解析二进制格式.format=b. 如果指定格式是二进制,转 ...
- JS 相等判断 / 类型判断
相等判断 JavaScript提供三种不同的值比较操作: 严格相等 ("triple equals" 或 "identity"),使用 === , 宽松相等 ( ...
- office转pdf转swf
系统环境:CentOs5.5用到的工具:Openoffice 3 , Pdf2Swf tool , Jodconverter , FlexPaper 网上找了些资料,早有人已经实现了这样的功能,只不过 ...
- 机器学习进阶-图像梯度计算-scharr算子与laplacian算子(拉普拉斯) 1.cv2.Scharr(使用scharr算子进行计算) 2.cv2.laplician(使用拉普拉斯算子进行计算)
1. cv2.Scharr(src,ddepth, dx, dy), 使用Scharr算子进行计算 参数说明:src表示输入的图片,ddepth表示图片的深度,通常使用-1, 这里使用cv2.CV_6 ...
- lientDataset的Delta与XML相互转换
一个ClientDataset的Delta与XML相互转换的文章:大家都知道TClientDataSet的Delta属性保存数据集的变化,但是Delta是OleVariant类型的属性,这样如果用De ...
- css-图片垂直居中
1. img { vertical-align: middle; } 2. <body> <div> <img src="1.jpg" alt=& ...
- 模糊查询内存查询java实现
下面说说看到的工作项目中的代码,是这个样子的,事先查询一次数据库,将查询到的整张表的数据存到内存,以后使用时不再查询数据库,而直接操作内存中的数据,这主要用于数据库中的数据比较稳定,不会轻易改变的情况 ...