您现在的位置是:首页 > 文章详情

Android直播带货系统中如何实现二维码扫描功能

日期:2019-11-12点击:338

Android直播带货系统中如何实现二维码扫描功能

李佳琦的出现将直播带货成功的引向了“巅峰”,为了响应众平台和用户的需求,开发Android直播带货系统成为当下的开发热潮。那么在平时的直播软件中,登录、分享、支付等场景中经常出现扫描二维码的需求。接下来就以云豹直播app中的二维码扫描功能为例,跟大家简单分享下怎样搞笑、快捷、稳定的实现这个功能。
目前github上关于Android直播带货系统实现二维码的库最有名的是Google的Zxing,但是Zxing集成复杂,体积大,扫描识别比较慢,而且封装的不好,使用不方便。这里推荐Zbar,Zbar具有识别快,集成方便等优点。
实际开发中我们推荐使用bingoogolapple/BGAQRCode-Android 这个库,这个是对Zbar的进一步封装,集成使用更加方便。

1)首先将这个库集成到项目中

compile 'cn.bingoogolapple:bga-qrcode-zbar:1.3.6' 

2)在需要扫码的activity的布局文件中加入

<?xml version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <include layout="@layout/view_title"/> <cn.bingoogolapple.qrcode.zbar.ZBarView android:id="@+id/zbarview" android:layout_width="match_parent" android:layout_height="match_parent" app:qrcv_animTime="1000" app:qrcv_barCodeTipText="将条码放入框内,即可自动扫描" app:qrcv_barcodeRectHeight="120dp" app:qrcv_borderColor="@android:color/white" app:qrcv_borderSize="1dp" app:qrcv_cornerColor="@color/colorPrimaryDark" app:qrcv_cornerLength="20dp" app:qrcv_cornerSize="3dp" app:qrcv_customGridScanLineDrawable="@mipmap/custom_grid_scan_line" app:qrcv_isAutoZoom="true" app:qrcv_isBarcode="false" app:qrcv_isOnlyDecodeScanBoxArea="false" app:qrcv_isShowDefaultGridScanLineDrawable="true" app:qrcv_isShowDefaultScanLineDrawable="true" app:qrcv_isShowLocationPoint="true" app:qrcv_isShowTipBackground="true" app:qrcv_isShowTipTextAsSingleLine="false" app:qrcv_isTipTextBelowRect="false" app:qrcv_maskColor="#33FFFFFF" app:qrcv_qrCodeTipText="将二维码/条码放入框内,即可自动扫描" app:qrcv_rectWidth="200dp" app:qrcv_scanLineColor="@color/colorPrimaryDark" app:qrcv_toolbarHeight="56dp" app:qrcv_topOffset="80dp" app:qrcv_verticalBias="-1"/> 


3)在activity的onCreate方法中初始化扫码控件,并设置扫码回调。
mZBarView = findViewById(R.id.zbarview); mZBarView.setDelegate(this); @Override public void onScanQRCodeSuccess(String result) { Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); vibrator.vibrate(200); L.e("扫码", "扫描结果为-----> " + result); if (!TextUtils.isEmpty(result)) { try { JSONObject obj = JSON.parseObject(result); String scope = obj.getString("scope"); if (Constants.QR_CODE_SCOPE.equals(scope)) { JSONObject data = obj.getJSONObject("data"); int type = data.getIntValue("type"); switch (type) { case 1: String touid = data.getString("uid"); if (!TextUtils.isEmpty(touid)) { RouteUtil.forwardUserHome(mContext, touid); finish(); } break; case 2: String key = data.getString("key"); if (!TextUtils.isEmpty(key)) { MainHttpUtil.loginQrCode(key, new HttpCallback() { @Override public void onSuccess(int code, String msg, String[] info) { if (code == 0) { finish(); } else { ToastUtil.show(msg); if (mZBarView != null) { mZBarView.startSpot(); // 重新开始识别 } } } }); }else{ if (mZBarView != null) { mZBarView.startSpot(); // 重新开始识别 } } break; } } else { ToastUtil.show("无效的二维码"); if (mZBarView != null) { mZBarView.startSpot(); // 重新开始识别 } } } catch (Exception e) { ToastUtil.show("无效的二维码"); if (mZBarView != null) { mZBarView.startSpot(); // 重新开始识别 } } } else { ToastUtil.show("无效的二维码"); if (mZBarView != null) { mZBarView.startSpot(); // 重新开始识别 } } } 

4)在activity的onStart和onStop方法中分别开启和关闭摄像头,并且在onDestory方法中销毁释放摄像头。

@Override protected void onStart() { super.onStart(); if (mZBarView != null) { mZBarView.startCamera(); // 打开后置摄像头开始预览,但是并未开始识别 mZBarView.startSpotAndShowRect(); // 显示扫描框,并开始识别 } } @Override protected void onStop() { if (mZBarView != null) { mZBarView.stopCamera(); // 关闭摄像头预览,并且隐藏扫描框 } super.onStop(); } @Override protected void onDestroy() { if (mZBarView != null) { mZBarView.onDestroy(); // 销毁二维码扫描控件 } mZBarView = null; MainHttpUtil.cancel(MainHttpConsts.LOGIN_QR_CODE); super.onDestroy(); L.e("扫码", "onDestroy-----> "); } 
原文链接:https://yq.aliyun.com/articles/726861
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章