Android二维码开发学习教程

 更新时间:2016年07月11日 15:07:23   作者:Fndroid  
这篇文章主要为大家分享了Android二维码开发学习教程,感兴趣的小伙伴们可以参考一下

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

 

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

 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作为整个活动的布局,然后设置解析成功的回调接口,实现回调的方法将数据回传个主活动即可。
当然,如果是需要一个自定义扫描界面的效果,就没有这么简单了。

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

相关文章

  • Android移动应用开发指南之六种布局详解

    Android移动应用开发指南之六种布局详解

    Android应用界面要美观好看,就需要运用到一定的布局技术,Android布局是不可忽视的,是android应用界面开发的重要一环,这篇文章主要给大家介绍了关于Android移动应用开发指南之六种布局的相关资料,需要的朋友可以参考下
    2022-09-09
  • Android中修改设备权限的方法

    Android中修改设备权限的方法

    这篇文章主要介绍了Android中修改设备权限的方法,涉及Android源码中设备权限的修改技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • android实现线程间通信的四种常见方式

    android实现线程间通信的四种常见方式

    线程通信相信大家都不陌生了,但是你知道几种方法呢,本文主要介绍了android实现线程间通信的四种常见方式,分享给大家,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Android中RecyclerView实现Item添加和删除的代码示例

    Android中RecyclerView实现Item添加和删除的代码示例

    本篇文章主要介绍了Android中RecyclerView实现Item添加和删除的代码示例,非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • Java ArrayList源码深入分析

    Java ArrayList源码深入分析

    ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList,并实现了List接口
    2022-08-08
  • android实现百度地图自定义弹出窗口功能

    android实现百度地图自定义弹出窗口功能

    这篇文章主要介绍了android实现百度地图自定义弹出窗口的功能,大家参考使用吧
    2013-11-11
  • Android 拍照并对照片进行裁剪和压缩实例详解

    Android 拍照并对照片进行裁剪和压缩实例详解

    这篇文章主要介绍了Android 拍照并对照片进行裁剪和压缩实例详解的相关资料,这里提供实例代码,需要的朋友可以参考下
    2017-07-07
  • Android打赏功能实现代码(支付宝转账)

    Android打赏功能实现代码(支付宝转账)

    这篇文章主要介绍了Android打赏功能之支付宝转账 ,需要的朋友可以参考下
    2017-12-12
  • Android LeakCanary检测内存泄露原理

    Android LeakCanary检测内存泄露原理

    这篇文章主要介绍了分析LeakCanary检测内存泄露原理,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-03-03
  • Android Jetpack库重要组件WorkManager的使用

    Android Jetpack库重要组件WorkManager的使用

    WorkManager是Android Jetpack的一个强大的组件,用于处理后台耗时任务。后台任务可以是一次性的,也可以是重复的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论