Android二维码的创建、解析及NotFoundException

本文介绍了在Android中如何生成和解析二维码,包括遇到的NotFoundException及其解决方案。生成二维码的核心在于将信息编码为像素数组,解析过程则是解码像素数组得到原始信息。在处理过程中,未对Bitmap进行缩小操作会导致Zxing库抛出NotFoundException,缩小Bitmap尺寸后问题解决。
摘要由CSDN通过智能技术生成

本篇博客主要记录一下Android生成及解析二维码的基本方法,
同时记录一下遇到的NotFoundException及对应解决方法。


如今很多APK都集成了二维码,其本质不过是将信息按照0、1的方式写入到图片中,
0、1分别对应了不同的颜色。

从APK调用api的角度来看,生成和解析二维码是非常容易的,
真正的难度其实还是在信息的编码及图像的识别上,而这就比较依赖于专业知识了。

对于普通开发者而言,在项目中引用google的支持库后,就能够开发基本的功能了。

我自己写demo时,在Android Studio中引用的支持库为com.google.zxing:core:3.3.0。

整个demo的界面非常简单,如下图所示:

基本功能就是点击GENERATE按键后,在界面下方生成二维码;
点击SCAN按键后,从二维码图片中得到对应的信息。


其中,生成二维码的核心代码如下:

    private void generateQRCode() {
        //得到信息对应的像素数组
        int[] pixels = generatePixels();

        if (pixels != null) {
            Bitmap bitmap = Bitmap.createBitmap(
                    QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888);

            //根据像素数组生成bitmap
            //这部分参数含义查看一下API描述,比较容易弄懂
            bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);

            //将bitmap显示到界面上
            mImageView.setImageBitmap(bitmap);

            mScanButton.setEnabled(true);
        }
    }

容易看出,上面代码的重点部分在于生成像素数组。

这部分内容如下所示:

    private int[] generatePixels() {
        //得到需要写入的信息
        String data = createData();

        int[] pixels = null;

        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值