android开发游记:二维码和条形码的识别和生成

二维码和条形码是app中很重要的功能,特别是二维码的使用非常普遍,现在常用的开源库目前就谷歌zxing和日本人写的zbar,个人对谷歌比较亲切所以我们在项目中使用zxing,zbar商用的话可能会有授权的问题,这里就不讨论二者的区别了,下面说说如何在app中集成二维码和条形码识别和生成的功能。

效果图:

android开发游记:二维码和条形码的识别和生成_第1张图片 android开发游记:二维码和条形码的识别和生成_第2张图片

android开发游记:二维码和条形码的识别和生成_第3张图片 android开发游记:二维码和条形码的识别和生成_第4张图片

由于项目的需要,需要集成二维码和条形码扫描的功能于是在网上找了一下,自己看了一些文章整理了一下,把生成和识别的功能都集成到一个demo里面了,把下载链接放给大家。

这里给出Zxing的官方源码包,但是不推荐直接使用,因为官方源码包含了很多冗余的功能,而我们需要的只是其中二维码和条形码扫描的那一部分:
官网下载的Zxing源码包

我找了一个简化的demo,同时修改了一下,增加了二维码和条形码生成的功能,下面上连接:
基于Zxing的二维码条形码扫描和生成demo

先看下目录结构:

android开发游记:二维码和条形码的识别和生成_第5张图片

  • com.example.qr_codescan包下是自己自定义的Activity
  • com.mining.app.zxing.camera包下是Zxing的操作相机的类
  • com.mining.app.zxing.decoding包下是Zxing的解码类
  • com.mining.app.zxing.image包下是处理图像的类
  • com.mining.app.zxing.view包下是处理扫描界面的view类(如果要改变其展示界面需重写此类)
  • com.mining.app.zxing.encoding是我添加的生成二维码和条形码的编码类

如果导入该功能的话,在自己的Activity中启动MipcaActivityCapture就可以了,然后修改其中的onResultHandler()方法处理返回结果,demo直接把扫描结果和图片返回给了前一个页面进行显示。

在MainActivity中调用EncodingHandler的createQRCode()方法和creatBarcode()方法可以生产二维码和条形码
参数解释如下:

Bitmap createQRCode(String str,             //二维码加密内容
                    int widthAndHeight);    //生成二维码的高宽
Bitmap creatBarcode(Context context,        //页面上下文
                    String contents,        //条形码加密内容
                    int desiredWidth,       //条形码宽
                    int desiredHeight,      //条形码高
                    boolean displayCode);   //是否在生成的条形码下面显示条形码内容

要注意的是:

  • 二维码可以加密包括中文在内的各种字符,而条形码只能加密数字英文和半角符号

启动扫描页面,扫描二维码:

        Intent intent = new Intent();
        intent.setClass(MainActivity.this, MipcaActivityCapture.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivityForResult(intent, SCANNIN_GREQUEST_CODE);

你可能感兴趣的:(android,扫描二维码,zxing二维码,zxing-demo)