人生处万类,知识最为贤。这篇文章主要讲述安卓 二维码相关的知识,希望能为你提供帮助。
◆android-zxingLibrary
框架特性介绍集成方便
可打开默认二维码扫描页面
支持对图片Bitmap的扫描功能
支持对UI的定制化操作
支持对条形码的扫描功能
支持生成二维码操作
支持控制闪光灯开关
代码部分集成到项目:
S1.添加依赖 compile ‘cn.yipianfengye.android:zxing-library:2.2‘或导入library源码库;
S2.初始化ZXingLibrary.initDisplayOpinion(this);
S3.调用logger;
API:
使用默认方式 打开默认二维码扫描界面: Intent intent = new Intent(getApplication(), CaptureActivity.class); startActivityForResult(intent, REQUEST_CODE); 接受结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { /** * 处理二维码扫描结果 */ if (requestCode == REQUEST_CODE) { //处理扫描结果(在界面上显示) if (null != data) { Bundle bundle = data.getExtras(); if (bundle == null) { return; } if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) { String result = bundle.getString(CodeUtils.RESULT_STRING); tvScanMsg.setText(result); Toast.makeText(this, "解析结果:" + result, Toast.LENGTH_LONG).show(); } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) { Toast.makeText(mContext, "解析二维码失败", Toast.LENGTH_LONG).show(); } } } } 自定义方式 添加CaptureFragment替换扫描布局区域 captureFragment = new CaptureFragment(); // 为二维码扫描界面设置定制化界面 CodeUtils.setFragmentArgs(captureFragment, R.layout.scan_area_layout); captureFragment.setAnalyzeCallback(analyzeCallback); getSupportFragmentManager().beginTransaction().replace(R.id.fl_scan_area, captureFragment).commit(); 自定义扫描布局 < ?xml version="1.0" encoding="utf-8"?> < FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="fill_parent" > < SurfaceView android:id="@+id/preview_view" android:layout_width="wrap_content" android:layout_height="wrap_content" /> < com.uuzuche.lib_zxing.view.ViewfinderView android:id="@+id/viewfinder_view" android:layout_width="wrap_content" android:layout_height="wrap_content" 【安卓 二维码】 app:inner_width="200dp" app:inner_height="200dp" app:inner_margintop="25dp" app:inner_corner_color="@color/red" app:inner_corner_length="30dp" app:inner_corner_width="5dp" app:inner_scan_bitmap="@drawable/scan_image" app:inner_scan_speed="10" app:inner_scan_iscircle="false" /> < /FrameLayout> 扫描结果回调的处理 /** * 二维码解析回调函数 */ CodeUtils.AnalyzeCallback analyzeCallback = new CodeUtils.AnalyzeCallback() { @Override public void onAnalyzeSuccess(Bitmap mBitmap, String result) { FwLog.d(result); onScanFinish(result); } @Override public void onAnalyzeFailed() { FwLog.d("failed..."); onScanFinish(""); } }; private void onScanFinish(String result){ Intent resultIntent = new Intent(); Bundle bundle = new Bundle(); bundle.putInt(CodeUtils.RESULT_TYPE, CodeUtils.RESULT_SUCCESS); bundle.putString(CodeUtils.RESULT_STRING, result); resultIntent.putExtras(bundle); setResult(RESULT_OK, resultIntent); finish(); } |
支持自定义扫描属性 < declare-styleable name="innerrect"> < attr name="inner_width" format="dimension"/> < !-- 控制扫描框的宽度 --> < attr name="inner_height" format="dimension"/> < !-- 控制扫描框的高度 --> < attr name="inner_margintop" format="dimension" /> < !-- 控制扫描框距离顶部的距离 --> < attr name="inner_corner_color" format="color" /> < !-- 控制扫描框四角的颜色 --> < attr name="inner_corner_length" format="dimension" /> < !-- 控制扫描框四角的长度 --> < attr name="inner_corner_width" format="dimension" /> < !-- 控制扫描框四角的宽度 --> < attr name="inner_scan_bitmap" format="reference" /> < !-- 控制扫描图 --> < attr name="inner_scan_speed" format="integer" /> < !-- 控制扫描速度 --> < attr name="inner_scan_iscircle" format="boolean" /> < !-- 控制小圆点是否展示 --> < /declare-styleable> |
参考:
https://github.com/yipianfengye/android-zxingLibrary
◆BGAQRCode-Android
框架特性介绍功能比较完善强大,未集成
ZXing 扫描二维码
ZXing 识别图库中的二维码图片
可以设置用前置摄像头扫描
可以控制闪光灯,方便夜间使用
可以定制各式各样的扫描框
可定制全屏扫描或只识别扫描框区域内的二维码
ZBar 扫描二维码
代码部分集成到项目:
S1.添加依赖 compile ‘cn.yipianfengye.android:zxing-library:2.2‘或导入library源码库;
S2.初始化ZXingLibrary.initDisplayOpinion(this);
S3.调用logger;
API:
使用默认方式 打开默认二维码扫描界面: |
支持自定义扫描属性 < declare-styleable name="innerrect"> |
参考:
https://github.com/bingoogolapple/BGAQRCode-Android
◆ZxingGenerator
效果
框架特性介绍花式二维码生成,提供了6种样式。已封装成工具类,使用方便。
代码部分集成到项目:
S1.添加依赖 zxing jar包;
API:
工具类 QRCodeUtils QRCodeUtils.createQRCode("http://www.tmtpost.com/2536837.html") |
参考:
vivian8725118/ZxingGenerator 6种样式
其他项目
Google官方项目
https://github.com/zxing/zxing
另一个使用较多的,提供了几种扫描方式,封装不完善,需要做一些定制修改
https://github.com/journeyapps/zxing-android-embedded
推荐阅读
- happens-before
- IDEA跑代码出现Error(7,8)***App is alreadydefinedasobjectAppobject Appextends Application{
- 移动端自动化测试-Windows-Android-Appium环境搭建
- 微信运动刷步助手v9.0免费安卓微信运动刷步神器
- ()android 通知
- Android Studio 3.0.1 又见恶心爆的bug。。。xiete
- Android基础Activity篇——Intent
- react native android模拟机调试
- Android Studio生成签名安装包(Generate Signed APK)