android开发 如何实现扫描本地二维码图片

android开发 如何实现扫描本地二维码图片,第1张

开源的二维码扫描库主要有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如何从服务器取多张图片,在本地保存并显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9529938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存