您的位置:首页 > 移动开发 > Android开发

Android 使用Zxing 扫描二维码 和生成二维码

2017-12-28 11:40 489 查看
6.1 二维码的使用场景及原理

概念:二维码又称 QR Code , QR 全称 Quick Response ,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code

条形码能存更多的信息,也能表示更多的数据类型。

原理:二维条码 / 二维码( 2-dimensional bar code )是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图

形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的 “0” 、 “1” 比特流的概念,使用若干个与二进制相对应的几何

形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其

特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。

场景:

● 信息获取(名片、地图、 WIFI 密码、资料)

● 网站跳转(跳转到微博、手机网站、网站)

● 广告推送(用户扫码,直接浏览商家推送的视频、音频广告)

● 手机电商(用户扫码、手机直接购物下单)

● 防伪溯源(用户扫码、即可查看生产地;同时后台可以获取最终消费地 )

● 优惠促销(用户扫码,下载电子优惠券,抽奖)

● 会员管理(用户手机上获取电子会员信息、 VIP 服务)

● 手机支付(扫描商品二维码,通过银行或第三方支付提供的手机端通道完成支付)

6.2 二维码的扫描与生成( ZXing )

6.2.1 二维码的扫描

6.2.2 二维码的生成

步骤:

1. 导入 module

这个是 zxing 的精简版。 zxing 里面有太多的功能,实际开发中都用不到,所以就很有必要进行精简。

导入之后一定要引用到工程里面。

2. 在需要启动二维码扫描的地方直接跳转到 CaptureActivity 。

3. 然后在 onActivityResult  方法里面接收参数。

生成二维码:

EncodingUtils 是个工具类, createQRCode 方法又四个参数: 1. 要生成的内容 2. 宽度 3. 长度 4. 二维码中间的

图片(如果不需要, null )。

最后处理图片,一般是放入 IamgeView 中。

6.3 自写二维码扫描界面

6.4 扩展: zbar

ios 的框架。但是 Android 也能用。

zxing 是一个功能强大的库,可以实现很多功能。但是 zbar 做的事情较少。
在实际使用中, zxing 常常需要精简。

扫描二维码

Button btn = (Button) findViewById(R.id.btn);
tv = (TextView) findViewById(R.id.tv);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent,0);
}
});


onActivityResult


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("TAG", "onActivityReenter: 请求成功");
if(resultCode==RESULT_OK){
Bundle bundle = data.getExtras();
String result = bundle.getString("result");
tv.setText(result);
}
}


生成二维码

btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s = et.getText().toString();
Bitmap qrCode = EncodingUtils.createQRCode(s, 200, 200, null);
iv.setImageBitmap(qrCode);
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: