最近由于公司需求,需要生成自己的二维码,并且进行二维码扫描,对内容进行快速识别。找了很多关于二维码生成的例子看了一下,讲的都很详细。但是二维码的生成和识别都是底层代码实现,对于我们移动开发者来说为什么要关注底层的实现呢??只要能够调用,实现功能不就ok了?
接下来在github上发现了Google官方开源的二维码,条形码等等识别与生成的框架,而且支持多个端口,如果大家想要去研究,可以去摸索一下:google官网二维码库,这里讲的很详细,资源也很丰富。
但是,想要提取出最新android端二维码使用库就不是很容易了,毕竟资源太大了,不好去分离。因此,花了很久时间找到了一个android端最新版的完整依赖库,大家可以到这里去下载完整移动端二维码库,找到了库,接下来的工作就非常简单了。。
首先将该库引入到你的项目中,如下图中libqrcode:
接下来在主项目中添加其为依赖库,就这样,准备工作就完成了。。
首先我们先来实现二维码扫描功能,实现方法就很简单了,在布局中,我们放置一个按钮用于开始扫描二维码,放置一个文本框显示扫描结果即可:
点击按钮的时候直接调用下面这个方法,即可进入扫描界面:
startActivityForResult(new Intent(getActivity(), CaptureActivity.class),0);
在onActivityResult方法中读取扫面信息:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode== Activity.RESULT_OK){
Bundle bundle = data.getExtras();
ToastUtil.showToast(getActivity(),bundle.getString(“result”));
}
}
我们可以去草料二维码生成一个二维码进行测试
接下来直接放测试效果
我用草料二维码生成了一个‘hello world‘的二维码,扫描得到其结果
在EncodingUtils文件中提供了下面这个静态方法用于客户端快速创建二维码:
public static Bitmap createQRCode(String content, int widthPix, int heightPix, Bitmap logoBm)
第一个参数是生成二维码的内容(可以是任意字符串,超链接等等),第二三个参数表示生成二维码的宽度和高度(单位时px),使用微信的都知道,微信个人二维码中间会显示一张用户头像的图片,那最后一个参数就是这个啦,用户可以自定义。
接下来我们快速生成一个二维码吧:布局很简单
提供一个输入框,让用户输入用语生成二维码的内容,下面放置一个生成按钮,最下面的imageview用于我们显示生成的二维码。
当我们点击生成二维码按钮时,我们调用上面的方法,传入四个参数
Bitmap logoBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.myhead);
Bitmap bitmap=EncodingUtils.createQRCode(mUname.getText().toString().trim(), 500, 500, logoBitmap);
ResultImage.setImageBitmap(bitmap);
神奇的时刻出现了。。客户端瞬间生成了我们需要的二维码
这里我就不去扫描了,大家可以去试一下,扫描结果一定是你文本框输入的字符串。