欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android二维码开发学习教程

程序员文章站 2024-03-04 08:58:05
二维码其实有很多种,但是我们常见的微信使用的是一种叫做qrcode的二维码,像下面这样的,可以放心的扫,这只是我的博客主页链接啦:   关于qr码编码的二...

二维码其实有很多种,但是我们常见的微信使用的是一种叫做qrcode的二维码,像下面这样的,可以放心的扫,这只是我的博客主页链接啦:

 Android二维码开发学习教程

关于qr码编码的二维码,我们要知道几个特点:
 1. 扫描时可以从各个角度去扫,也就是旋转多少度都没关系,不信吗?下次去肯德基买单试试咯。
 2. 二维码有容错率,容错率越大,生成的二维码也就越复杂,但是越不容易出错,并且,当二维码被遮挡的时候也越容易扫描出来。这里我上传的二维码容错为30%,可以从左上角开始扫描,大概扫描到下图范围的时候就可以识别出来了:

Android二维码开发学习教程

 3. 二维码的字符内容是有限制的,并且内容越多,二维码越复杂。如果想你的二维码容易被一些像素低的手机扫描出来,就尽量不要太复杂。 
注意:二维码生成可以通过各种网站来完成,只需要输入内容即可得到。
 既然二维码生成了,我们就要知道怎么用手机来扫描然后得到二维码代表的内容,这里介绍一个最简单的第三方库:barcodescaner 

我们通过这个库,可以直接编写一个用于拍摄并识别的活动,然后通过活动返回的结果进行结果处理,具体的步骤如下:

 1. 添加依赖
 compile 'me.dm7.barcodescanner:zxing:1.8.4' 

 2. 创建一个活动,代码如下所示: 

public class scanneractivity extends appcompatactivity implements zxingscannerview.resulthandler {
 private zxingscannerview mzxingscannerview;

 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  mzxingscannerview = new zxingscannerview(this); // 将zxingscannerview作为布局
  setcontentview(mzxingscannerview);
 }

 @override
 protected void onresume() {
  super.onresume();
  mzxingscannerview.setresulthandler(this); // 设置处理结果回调
  mzxingscannerview.startcamera(); // 打开摄像头
 }

 @override
 protected void onpause() {
  super.onpause();
  mzxingscannerview.stopcamera(); // 活动失去焦点的时候关闭摄像头
 }

 @override
 public void handleresult(result result) { // 实现回调接口,将数据回传并结束活动
  intent data = new intent();
  data.putextra("text", result.gettext());
  setresult(result_ok, data);
  finish();
 }
} 

3. 在主活动中打开这个活动,并处理传回的数据: 

public class homeactivity extends appcompatactivity {
 private textview mtextview;
 private webview mwebview;

 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.activity_home);
  mtextview = (textview) findviewbyid(r.id.tv);
  mwebview = (webview) findviewbyid(r.id.wv);
 }

 public void scancode(view view){
  startactivityforresult(new intent(this, scanneractivity.class), 1);
 }

 @override
 protected void onactivityresult(int requestcode, int resultcode, intent data) {
  super.onactivityresult(requestcode, resultcode, data);
  if (resultcode == result_ok){
   mtextview.settext(data.getstringextra("text")); // 显示识别到的文字
   mwebview.loadurl(data.getstringextra("text")); // 将识别的内容当作网址加载到webview
  }
 }
} 

4. 添加摄像头和访问网络权限: 
<uses-permission android:name="android.permission.camera"/>
<uses-permission android:name="android.permission.internet"/> 
使用这个工具类的方法非常简单,只需要将一个zxingscannerview作为整个活动的布局,然后设置解析成功的回调接口,实现回调的方法将数据回传个主活动即可。
当然,如果是需要一个自定义扫描界面的效果,就没有这么简单了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。