一.简要介绍

QR Code码,是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。
       这里的二维码和书本的条形码是不一样的。

这里的二维码样式:


这里使用网络框架,github上的依赖,只要使用几句话就能生成一个二维码的图像显示在页面上,并且使用他做好的其他类还能扫描二维码,进行自己的操作。

二.配置环境

依赖语句:
compile 'com.google.zxing:core:3.2.1'
compile 'cn.bingoogolapple:bga-qrcodecore:1.1.4@aar'
compile 'cn.bingoogolapple:bga-zxing:1.1.4@aar'

如图所示:

然后点击同步。稍等一下就可以只要他创建的类和方法来操作了。

二.使用

(一)创建二维码代码

Bitmap bitmap = QRCodeEncoder.syncEncodeQRCode("https://www.baidu.com", 400);第一个参数是一个任意字符串,第二个参数是产生的BitMap图片对象的大小,创建bitMap对象后就可以把它放在我们页面的ImageView中显示。

一般使用时的代码块:

/*** 因为产生二维码是耗时操作所以要在子线程中操作*/
private void newCodeImage() {//开启线程new Thread(new Runnable() {@Overridepublic void run() {final Bitmap bitmap = QRCodeEncoder.syncEncodeQRCode("https://www.baidu.com", 400);//把产生的Bitmap赋值到ImageView中,但是要在主线程中运行runOnUiThread(new Runnable() {@Overridepublic void run() {iv.setImageBitmap(bitmap);}});}}).start();
}

(二)扫描二维码

1.创建Xml文件代码,用来显示扫描框ZXingView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><cn.bingoogolapple.qrcode.zxing.ZXingView
        android:id="@+id/zxingview"android:layout_width="match_parent"android:layout_height="wrap_content"app:qrcv_animTime="1000"app:qrcv_borderColor="@android:color/white"app:qrcv_borderSize="1dp"app:qrcv_cornerColor="@color/colorPrimaryDark"app:qrcv_cornerLength="20dp"app:qrcv_cornerSize="3dp"app:qrcv_maskColor="#33FFFFFF"app:qrcv_rectWidth="200dp"app:qrcv_scanLineColor="@color/colorPrimaryDark"app:qrcv_scanLineSize="1dp"app:qrcv_topOffset="90dp" />
</LinearLayout>

2.扫描的执行主要语句

//定义显示能扫描二维码的摄像头的View-->ZXingView,实例化
ZXingView zXingView = (ZXingView) findViewById(R.id.zxingview);
//设置摄像头的监事件,来监听扫描成功和失败结果
zXingView.setDelegate(this);//让本类对象实现监听//开启摄像头的扫描功能
zXingView.startCamera();
//开始扫描
zXingView.startSpot();/*** 扫描二维码成功后返回一个字符串的回调方法*/
@Override
public void onScanQRCodeSuccess(String result) {//做相应的数据处理。。。//停止扫描zXingView.stopCamera();//关闭页面finish();
}/*** 扫描二维码失败后的回调方法*/
@Override
public void onScanQRCodeOpenCameraError() {Toast.makeText(this, "不能识别到二维码", Toast.LENGTH_SHORT).show();}

三.一个简单的使用示例

程序运行后的界面:

点击扫描后,显示扫描界面:

扫描自己生成的二维码可以跳转到百度网络页面,
关闭网页后显示的结果:

可以看到,能都拿到二维码中藏有的字符串信息!

下面是设计的主要步骤

(一)设计布局文件

1.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><Button
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="check"android:text="去扫描秒二维码" /><ImageView
        android:id="@+id/main_iv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher" /><TextView
        android:id="@+id/main_tv_result"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="扫描后返回的结果!" />
</LinearLayout>

2.设计显示扫描框的界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><cn.bingoogolapple.qrcode.zxing.ZXingView
        android:id="@+id/zxingview"android:layout_width="match_parent"android:layout_height="wrap_content"app:qrcv_animTime="1000"app:qrcv_borderColor="@android:color/white"app:qrcv_borderSize="1dp"app:qrcv_cornerColor="@color/colorPrimaryDark"app:qrcv_cornerLength="20dp"app:qrcv_cornerSize="3dp"app:qrcv_maskColor="#33FFFFFF"app:qrcv_rectWidth="200dp"app:qrcv_scanLineColor="@color/colorPrimaryDark"app:qrcv_scanLineSize="1dp"app:qrcv_topOffset="90dp" />
</LinearLayout>

(二)设计主页面的代码

package com.lwz.qr_code;import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;import cn.bingoogolapple.qrcode.zxing.QRCodeEncoder;public class MainActivity extends AppCompatActivity {//定义一个显示二维码的图形ImageView iv;TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//实例化iv = (ImageView) findViewById(R.id.main_iv);textView = (TextView) findViewById(R.id.main_tv_result);newCodeImage();}/*** 因为产生二维码是耗时操作所以要在子线程中操作*/private void newCodeImage() {//开启线程new Thread(new Runnable() {@Overridepublic void run() {final Bitmap bitmap = QRCodeEncoder.syncEncodeQRCode("https://www.baidu.com", 400);//把产生的Bitmap赋值到ImageView中,但是要在主线程中运行runOnUiThread(new Runnable() {@Overridepublic void run() {iv.setImageBitmap(bitmap);}});}}).start();}/**** 扫描二维码* 需要操作摄像头,加权限* 需要跳转到另一个页面*/public void check(View view) {startActivityForResult(new Intent(this, Scanner.class), 1);}/*** 结果码的返回,扫描完成后,把扫描到的信息显示在页面上*/@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == 2) {String result = data.getStringExtra("result");textView.setText(result);//在实际运用中一般都是判断扫描得到的内容再做相应的行为if (result.startsWith("http://")||result.startsWith("https://")) {Intent intent = new Intent(Intent.ACTION_VIEW);intent.setData(Uri.parse(result));startActivity(intent);} else if (result.startsWith("firend://")) {//app加好友的方法//调用服务器接口} else if (result.startsWith("pay://")) {//启动支付宝}}}
}

(三)设计显示扫描框的Activity的页面代码

package com.lwz.qr_code;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;import cn.bingoogolapple.qrcode.core.QRCodeView;
import cn.bingoogolapple.qrcode.zxing.ZXingView;/*** 这是扫描二维码页面的类* 里面要有一个摄像头的View* 扫描完毕后还要,返回数据*/public class Scanner extends Activity implements QRCodeView.Delegate {//定义显示能扫描二维码的摄像头的View-->ZXingViewZXingView zXingView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_scanner);//实例化zXingView = (ZXingView) findViewById(R.id.zxingview);//设置摄像头的监事件,来监听扫描成功和失败结果zXingView.setDelegate(this);}@Overrideprotected void onStart() {super.onStart();//开启摄像头的扫描功能zXingView.startCamera();//开始扫描zXingView.startSpot();}/*** 扫描二维码成功后返回一个字符串的回调方法*/@Overridepublic void onScanQRCodeSuccess(String result) {Intent data=getIntent();data.putExtra("result",result);setResult(2,data);//停止扫描zXingView.stopCamera();//关闭页面finish();}/*** 扫描二维码失败后的回调方法*/@Overridepublic void onScanQRCodeOpenCameraError() {Toast.makeText(this, "不能识别到二维码", Toast.LENGTH_SHORT).show();}}

(四)在AndroidManifest添加权限

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

(五)在AndroidManifest注册扫描框的Activity页面

<activity android:name=".Scanner" />

弄完就可以实现一个简单的二维码生成和扫描的功能的软件了。这里能实现跳转到网页(如果二维码的数据是网页的字符串),如果二维码的信息数据是普通的字符串也能获取到。支付功能和添加好友等其他的功能代码暂时没有去实现,这个需要很多其他软件提供的信息。

这里提供一个github的源码文件的地址:
https://github.com/bingoogolapple/BGAQRCode-Android
       里面还还有二维码生成的其他各种处理。而且还有实时跟新的依赖数据,里面也有简单的使用步骤。

Android二维码图片生成和二维码扫描软件的设计相关推荐

  1. 二维码图片生成 hutool

    生成二维码 hutool 有相关的工具类可以调用 hutoolAPI 直接上代码实现: /*** 自定义参数,二维码样式** @param* @return QrConfig* @author 小乌龟 ...

  2. 二维码图片生成工具C#winform源码

    二维码图片生成工具C#winform源码 源码描述: 一.源码特点 采用winform进行开发,生成二维码并保存,欢迎下载 二.功能介绍 本源码是一个可以自动生成二维码图片的小模块,可以添加自己的lo ...

  3. 几个比较好的微信图文编辑器和二维码图片生成工具网站介绍给你!

    小小我收藏了一些非常实用但是排名不是太靠前的网站,不过毕竟好东西不能独享,这次小小就把这些多年珍藏的"宝贝"公之于众,大家以后用到的时候别忘了小小哦(*^ワ^*) 一·让你的微信公 ...

  4. qrcodejs2生成二维码,通过canvas绘制带边框+中间logo的二维码图片,下载二维码

    文章目录 一.通过qrcodejs2生成一个二维码 二.点击[下载配置服务器二维码]来下载二维码 1.通过canvas去绘制 边框+二维码+logo (1)为canvas增加绘制圆角矩形的方法(can ...

  5. 用python生成个性二维码_Python 生成个性二维码

    1.1 实验内容 本课程通过调用MyQR接口来实现生成个人所需二维码,并可以设置二维码的大小.是否在现有图片的基础上生成.是否生成动态二维码. 本课程主要面向Python3初学者. 1.2 知识点 P ...

  6. Swift开发小技巧--扫描二维码,二维码的描边与锁定,设置扫描范围,二维码的生成(高清,无码,你懂得!)...

    二维码的扫描,二维码的锁定与描边,二维码的扫描范围,二维码的生成(高清,无码,你懂得!),识别相册中的二维码 扫描二维码用到的三个重要对象的关系,如图: 1.懒加载各种类 // MARK: - 懒加载 ...

  7. 批量图片生成pdf C#源码

    下载链接:图片生成pdf C#源码 把批量图片生成pdf 批量选择 改变图片顺序 图片的缩小预览 自定义要生成的pdf 可以按原始尺寸 可以按长.宽的指定大小按比例绽放 或者按照指定的尺寸如800*6 ...

  8. Android超方便 集成 Zxing实现扫一扫,闪光灯,生成二维码图片,解析二维码(条码)等功能

    之前我写过一篇博客是关于如何将zxing集成到Android Studio中,以及简单的实现扫一扫功能. 详情请看:Android Studio集成Zxing扫一扫 但是,上面那篇博客只有有一个扫一扫 ...

  9. android 分享二维码图片到微信QQ(url地址字符串生成二维码图片、分享二维码图片到微信QQ)

    主要用到的功能 1.url地址字符串生成二维码图片 2.分享二维码图片到微信QQ 所需的依赖包 implementation 'com.google.zxing:core:3.0.1' 代码 1.将U ...

最新文章

  1. [导入]正确计算天干地支生肖的函数(.net)---更正版
  2. WPF入门(四)-线形区域Path内容填充之填充图(ImageBrush)
  3. MFC让文档/视图结构程序支持滚动条
  4. MYSQL基础--学习笔记
  5. SpringBoot笔记:SpringBoot集成SpringbootAdmin监控
  6. tensorflow2调用huggingface transformer预训练模型
  7. 阿里云轻应用服务器 宝塔面板 mongodb 配置外网连接 其二 配置账号密码
  8. CSS:实现文本超出显示省略效果(可指定几行显示)
  9. 牛的障碍Cow Steeplechase
  10. a标签中执行js函数
  11. anaconda安装opencv
  12. vum安装mysql_Vue自动化工具(Vue-CLI)的安装
  13. c语言 十进制转十六进制算法,十进制转十六进制算法
  14. < 数据结构 > 队列的实现
  15. android popWindow组件微信式实现(较完整版)
  16. 计算机建模和仿真实训报告,cad与cam实训报告范文3篇
  17. 理解BPDU Filtering的意义(BPDU Filtering在全局配置与接口配置上的区别)
  18. IDEA 配置 maven
  19. 计算机win7如何连接wifi网络,笔记本怎么连接wifi,教您笔记本怎么连接Wifi
  20. 照明开关雷达感应方案,多普勒雷达模块技术,智能雷达感控应用

热门文章

  1. 数据分析36计(29):价格需求弹性和因果推断
  2. 智能指纹锁办理3C认证多少钱
  3. html5中如何放图片,css怎么放图片?
  4. (转载) 驻足 思考 -- 提升 思维方式
  5. win 10网络适配器没有无线网络连接
  6. 笑傲江湖 | 智能交通行业生存法则
  7. 虚幻4-初识蓝图“设置操控器移动“
  8. 洛谷之—水晶灯火灵(吐血)
  9. BZOJ 3039 玉蟾宫 最大子矩阵 算♂法②
  10. sendmessage获取usb摄像机_尽职尽责 家庭哨兵——360摄像机云台变焦版再体验