Zxing3.x的简单使用(一)

Zxing3.x的使用

  这几天是小假期,本来想去出去转转,放假之前突然发现了一本书,试读了两页,发现受益匪浅,果断不出去了,在家研读,可惜是适度版的,只能看前几十页,今天上午就看完了,下午下了订单,希望明天能到,下午没啥事,整理了一下以前的资料,分享一下Zxing吧。
  Zxing相信大家都很熟悉了,又是google出的,实现二维码的生成,解析。当初提需求的时候,领导让用最新的版本,网上的资料基本上都是2.x的,甚至看到1.6版的被转来转去,当时只能自己慢慢看,还好官方有DEMO,大致上读了一下,虽然他们做了国际化,但是还是不太友好,只能自己一点点读了。
  源码怎么获取呢,zxing官方是用maven管理的,如果你想从官网下载代码,需要先配置maven的环境,只是浪费一点时间,没什么难度,需要注意的一点是,当初用3.3的时候,怎么编译也不过,之后翻墙看了一圈,看到那些老外都在用3.1的,突发奇想用3.1编译,果然过了。maven第一次运行的时候,会下载好多文件,记得当时没挂代理,到是也能用,就是很耗时。以后会快很多。源码下好了,代码有很多个工程,找到你编译器对应的,导入,官方demo的zing,基本实现了二维码的生成,解析,不过是通过startActivityForResult的方法,判断flag来解读,直接找关键方法。
  把zing当做子工程直接引用。先说生成二维码:核心类是QRCodeEncoder,上代码:

 
private void initCode() {
WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
Point displaySize = new Point();
display.getSize(displaySize);
int width = displaySize.x;
int height = displaySize.y;
int smallerDimension = width < height ? width : height;
smallerDimension = smallerDimension * 7 / 8;

    Intent intent = getIntent();
    if (intent == null) {
        return;
    }

    intent.setAction(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_TEXT,code);

    try {
        boolean useVCard = intent.getBooleanExtra(USE_VCARD_KEY, false);
        qrCodeEncoder = new QRCodeEncoder(this, intent, smallerDimension, useVCard);
        Bitmap bitmap = qrCodeEncoder.encodeAsBitmap();
        if (bitmap == null) {
            qrCodeEncoder = null;
            return;
        }

        two_dimen_value.setImageBitmap(bitmap);


    } catch (WriterException e) {
        qrCodeEncoder = null;
    }
}

  首先获取屏幕的大小,自动适配屏幕,two_dimen_value是一个imageview,如果觉得不够严谨,如果觉得不够严谨,可以将二维码保存到SD卡,每次用直接读取,更新的话覆盖文件即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值