Android编程实现二维码的生成与解析

本文实例讲述了Android编程实现二维码的生成与解析。分享给大家供大家参考,具体如下:

直接上代码,代码上面有具体的解析,并且提供jar供下载:二维码Jar包.rar。

根据文本生成对应的二维码:

// 生成QR图
private void createImage() {
  try {
   // 需要引入core包
   QRCodeWriter writer = new QRCodeWriter();
   String text = qr_text.getText().toString();
   Log.i(TAG, "生成的文本:" + text);
   if (text == null || "".equals(text) || text.length() < 1) {
    return;
   }
   // 把输入的文本转为二维码
   BitMatrix martix = writer.encode(text, BarcodeFormat.QR_CODE,
     QR_WIDTH, QR_HEIGHT);
   System.out.println("w:" + martix.getWidth() + "h:"
     + martix.getHeight());
   Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
   hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
   BitMatrix bitMatrix = new QRCodeWriter().encode(text,
     BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);
   int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
   for (int y = 0; y < QR_HEIGHT; y++) {
    for (int x = 0; x < QR_WIDTH; x++) {
     if (bitMatrix.get(x, y)) {
      pixels[y * QR_WIDTH + x] = 0xff000000;
     } else {
      pixels[y * QR_WIDTH + x] = 0xffffffff;
     }
    }
   }
   Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT,
     Bitmap.Config.ARGB_8888);
   bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
   qr_image.setImageBitmap(bitmap);
  } catch (WriterException e) {
   e.printStackTrace();
  }
}

根据二维码图片读取内容:

// 解析QR图片
private void scanningImage() {
  Map<DecodeHintType, String> hints = new HashMap<DecodeHintType, String>();
  hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
  // 获得待解析的图片
  Bitmap bitmap = ((BitmapDrawable) qr_image.getDrawable()).getBitmap();
  RGBLuminanceSource source = new RGBLuminanceSource(bitmap);
  BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source));
  QRCodeReader reader = new QRCodeReader();
  Result result;
  try {
   result = reader.decode(bitmap1, hints);
   // 得到解析后的文字
   qr_result.setText(result.getText());
  } catch (NotFoundException e) {
   e.printStackTrace();
  } catch (ChecksumException e) {
   e.printStackTrace();
  } catch (FormatException e) {
   e.printStackTrace();
  }
}

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • iOS和Android用同一个二维码实现跳转下载链接的方法

    前言 最近一个项目需要iOS和安卓使用一个二维码,让扫描的机器自己识别操作系统实现跳转到相应的下载链接.比如iPhone用微信进行扫描就让他跳转appStore的下载页面,安卓机器使用微信扫描就直接跳浏览器下载.但是这二维码还有一个需求就是,用户已经下载了这个app,当用户打开app进入到注册页面时,再次扫描这个二维码时,自动填写邀请码进行注册.那么该如何实现,细节就不说了,直接上代码. 使用js实现,其实代码非常简单. 使用时直接拷贝代码,改掉相应的链接就好. PS:该链接在微信环境打开时还是

  • Android项目实战(二十八):使用Zxing实现二维码及优化实例

    前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中我们也许只会用到二维码的扫描和生成两个功能,所以不必下载完整的jar包,使用简化版的即可,下文可见. 这篇文章讲述: 1.如果快速在项目中集成zxing,实现扫描和生成二维码功能 2.根据项目需求去修改源码实现我们的要求并进行优化 一.快速集成zxing二维码 1.下载库文件 :http://xiazai.jb51.net/201611/yuanma/ZXingB

  • 基于Android实现个性彩色好看的二维码

    我编码的风格,先给大家展示下效果图,亲们感觉效果还不错,很满意的话,请继续往下阅读. 之前呢,也写过用安卓实现二维码生成彩色的二维码和带logo的二维码,也知道可以使用QRCode和ZXing两种方式,然后这一篇呢也是写二维码使用BarcodeFormat.QR_CODE,主要也是看见很多的非常漂亮的二维码,这里呢主要模仿qq的二维码,并且也高仿实现了长按发送给朋友和保存到图库的功能,觉得不错呢就请多支持下,哪里不好呢也可以说出来.好了我们一步一步来. 第一步:简单二维码实现 先来个最简单的二维

  • Android实现二维码扫描和生成的简单方法

    这里简单介绍一下ZXing库.ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.该项目可实现的条形码编码和解码.目前支持以下格式:UPC-A,UPC-E.EAN-8,EAN-13.39码.93码.ZXing是个很经典的条码/二维码识别的开源类库,以前在功能机上,就有开发者使用J2ME运用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力. ZXing

  • Android上使用ZXing识别条形码与二维码的方法

    目前有越来越多的手机具备自动对焦的拍摄功能,这也意味着这些手机可以具备条码扫描的功能.手机具备条码扫描的功能,可以优化购物流程,快速存储电子名片(二维码)等. 本文所述实例就使用了ZXing 1.6实现条码/二维码识别.ZXing是个很经典的条码/二维码识别的开源类库,早在很久以前,就有开发者在J2ME上使用ZXing了,只不过需要支持JSR-234规范(自动对焦)的手机才能发挥其威力,而目前已经有不少Android手机具备自动对焦的功能. 本文代码运行的结果如下,使用91手机助手截图时,无法截

  • 基于barcodescanner实现Android二维码扫描功能

    二维码扫描现在成为一种非常常见的APP基础功能,附录1是我曾经用过的二维码/条形码扫描开源项目,但是附录1的项目集成和二次定制比较繁琐和麻烦,因此可以发现不少人基于ZXing做了二次的开发,并贡献出这些项目,发到github上,其中barcodescanner就是这样的项目,barcodescanner的github项目地址:https://github.com/dm77/barcodescanner ,barcodescanner简化了ZXing的集成和二次定制难度,方便快速集成和开发,并且扫

  • Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题

    先给大家展示下效果图: 扫描内容是下面这张,二维码是用zxing库生成的 由于改了好几个类,还是去年的事都忘得差不多了,所以只能上这个类的代码了,主要就是改了这个CaptureActivity.java package com.zxing.activity; import java.io.IOException; import java.util.Vector; import android.app.Activity; import android.content.Intent; import

  • Android基于google Zxing实现二维码的生成

    最近项目用到了二维码的生成与识别,之前没有接触这块,然后就上网搜了搜,发现有好多这方面的资源,特别是google Zxing对二维码的封装,实现的已经不错了,可以直接拿过来引用,下载了他们的源码后,只做了少少的改动,就是在Demo中增加了长按识别的功能,网上虽然也有长按识别的Demo,但好多下载下来却无法运行,然后总结了一下,加在了下面的Demo中.   下面来介绍这个Demo的主类 public class BarCodeTestActivity extends Activity { priv

  • Android平台生成二维码并实现扫描 & 识别功能

    1.二维码的前世今生 "二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利用构成计算机内部逻辑基础的"0"."1"比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集:每个字符占有一定的宽度:具有一定的校验功能

  • Android基于google Zxing实现各类二维码扫描效果

    随着微信的到来,二维码越来越火爆,随处能看到二维码,比如商城里面,肯德基,餐厅等等,对于二维码扫描我们使用的是google的开源框架Zxing,我们可以去http://code.google.com/p/zxing/下载源码和Jar包,之前我项目中的二维码扫描功能只实现了扫描功能,其UI真的是其丑无比,一个好的应用软件,其UI界面也要被大众所接纳,不然人家就不会用你的软件啦,所以说应用软件功能和界面一样都很重要,例如微信,相信微信UI被很多应用软件所模仿,我也仿照微信扫描二维码效果进行模仿,虽然

随机推荐