开源的二维码扫描库主要有zxing和zbar,zbar在iPos平台上应用比较成熟,而在Android平台上主流还是用zxing库,因此这里主要讲述如何利用zxing进行二维码开发。
如何将zxing的Android源码导入工程。
在导入zxing的android源码之前,先去官方下载zxing的源码>
这里以16版本为例,zxing 16源码结构如下:
其中android文件夹就是android平台下的官方例子,在导入之前先要对core文件下的源码进行编译,得到核心包corejar。
编译方法请参照:>
然后就可以导入android平台下的例子了,导入方法如下:
打开Eclipse,新建android项目:(注意不要直接把android文件夹拷到workspace下导入,那样会无法导入)
导入核心包corejar。
修改stringsxml文件。在导入corejar之后工程还是会有下面的错误,出现这种错误可能是由于字符错误导致的,只需要把所有的%s 和%f改成 %1s和f 即可
修改完之后重新清理项目,此时已经没有错误了
将zxing代码嵌入自己的工程
在自己的工程中嵌入简化的zxing代码即可实现二维码生成和识别功能
嵌入方法:
将上述简化的代码拖到自己工程目录下;
将values文件夹和raw文件夹复制自己工程目录下;
建立CaptureActivityjava的布局文件capturexml:
<xml version="10" encoding="utf-8"><FrameLayout xmlns:android=";
导入corejar包
修改AndrodMainfestxml
<xml version="10" encoding="utf-8"><manifest xmlns:android=";
这种情况大致就可以实现二维码扫描了,想细化的话,还可以多看看安卓二维码扫描开发相关的教程
1、控制大小和位置
/
可以直接调用getWindow(),表示获得这个Activity的Window
对象,这样这可以以同样的方式改变这个Activity的属性
/
Window dialogWindow = dialoggetWindow();
WindowManagerLayoutParams lp = dialogWindowgetAttributes();
dialogWindowsetGravity(GravityLEFT | GravityTOP);
/
lpx与lpy表示相对于原始位置的偏移
当参数值包含GravityLEFT时,对话框出现在左边,所以lpx就表示相对左边的偏移,负值忽略
当参数值包含GravityRIGHT时,对话框出现在右边,所以lpx就表示相对右边的偏移,负值忽略
当参数值包含GravityTOP时,对话框出现在上边,所以lpy就表示相对上边的偏移,负值忽略
当参数值包含GravityBOTTOM时,对话框出现在下边,所以lpy就表示相对下边的偏移,负值忽略
当参数值包含GravityCENTER_HORIZONTAL时
,对话框水平居中,所以lpx就表示在水平居中的位置移动lpx像素,正值向右移动,负值向左移动
当参数值包含GravityCENTER_VERTICAL时
,对话框垂直居中,所以lpy就表示在垂直居中的位置移动lpy像素,正值向右移动,负值向左移动
gravity的默认值为GravityCENTER,即GravityCENTER_HORIZONTAL |
GravityCENTER_VERTICAL
本来setGravity的参数值为GravityLEFT | GravityTOP时对话框应出现在程序的左上角,但在
我手机上测试时发现距左边与上边都有一小段距离,而且垂直坐标把程序标题栏也计算在内了,
GravityLEFT, GravityTOP, GravityBOTTOM与GravityRIGHT都是如此,据边界有一小段距离
/
lpx = 100; // 新位置X坐标
lpy = 100; // 新位置Y坐标
lpwidth = 300; // 宽度
lpheight = 300; // 高度
lpalpha = 07f; // 透明度
// 当Window的Attributes改变时系统会调用此函数,可以直接调用以应用上面对窗口参数的更改,也可以用setAttributes
// dialogonWindowAttributesChanged(lp);
dialogWindowsetAttributes(lp);
/
将对话框的大小按屏幕大小的百分比设置
/
// WindowManager m = getWindowManager();
// Display d = mgetDefaultDisplay(); // 获取屏幕宽、高用
// WindowManagerLayoutParams p = getWindow()getAttributes(); // 获取对话框当前的参数值
// pheight = (int) (dgetHeight() 06); // 高度设置为屏幕的06
// pwidth = (int) (dgetWidth() 065); // 宽度设置为屏幕的095
// dialogWindowsetAttributes(p);
//获取connection conn = getURLConnection(url); is = conngetInputStream(); //获取Bitmap的引用 Bitmap bitmap = BitmapFactorydecodeStream(is) //获取长度 int length = (int) conngetContentLength(); if (length != -1) { byte[] imgData = new byte[length]; byte[] temp=new byte[512]; int readLen=0; int destPos=0; while((readLen=isread(temp))>0){ Systemarraycopy(temp, 0, imgData, destPos, readLen); destPos+=readLen; } bitmap=BitmapFactorydecodeByteArray(imgData, 0, imgDatalength); }可能想得不是很完善,你可以参考参考。
以上就是关于android开发 如何实现扫描本地二维码图片全部的内容,包括:android开发 如何实现扫描本地二维码图片、android怎么获取图片的大小、android如何从服务器取多张图片,在本地保存并显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)