安卓 二维码
Posted zhen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓 二维码相关的知识,希望对你有一定的参考价值。
◆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
以上是关于安卓 二维码的主要内容,如果未能解决你的问题,请参考以下文章