# android-zxingLibrary **Repository Path**: ouyangpengdev/android-zxingLibrary ## Basic Information - **Project Name**: android-zxingLibrary - **Description**: 几行代码快速集成二维码扫描功能 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-23 - **Last Updated**: 2021-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # android-zxingLibrary **更新日志** - compile 1.3 2016/08/02 优化扫描API - compile 1.4 2016/08/03 修复扫描时二维码拉伸问题 - compile 1.5 2016/08/05 更新控制闪光灯API - compile 1.6 2016/08/08 更新生成带logo二维码时logo不带边距可能存在的问题 - compile 1.7 2016/08/09 修改默认扫描框的大小,适配不同分辨率手机,修改自定义扫描框属性类型 - compile 1.8 2016/08/10 修复解析二维码图片时可能存在的OOM问题 - compile 1.9 2016/09/07 Library库中删除Application,在demo库中的Application执行初始化操作 - compile 2.0 2016/10/12 测试Demo中添加Android M权限处理,代码库添加自定义属性支持小圆点是否展示 - compile 2.1 2016/11/22 修复扫描中的一些bug - compile 2.2 2017/07/04 更新zxing包,修复一些已知的bug **使用说明** - 可打开默认二维码扫描页面 - 支持对图片Bitmap的扫描功能 - 支持对UI的定制化操作 - 支持对条形码的扫描功能 - 支持生成二维码操作 - 支持控制闪光灯开关 **使用方式:** - **集成默认的二维码扫描页面** 在具体介绍该扫描库之前我们先看一下其具体的使用方式,看看是不是几行代码就可以集成二维码扫描的功能。 - 在module的build.gradle中执行compile操作 ``` compile 'cn.yipianfengye.android:zxing-library:2.2' ``` - 在demo Application中执行初始化操作 ``` @Override public void onCreate() { super.onCreate(); ZXingLibrary.initDisplayOpinion(this); } ``` - 在代码中执行打开扫描二维码界面操作 ``` /** * 打开默认二维码扫描界面 */ button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, CaptureActivity.class); startActivityForResult(intent, REQUEST_CODE); } }); ``` 这里的REQUEST_CODE是我们定义的int型常量。 - 在Activity的onActivityResult方法中接收扫描结果 ``` /** * 处理二维码扫描结果 */ 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); Toast.makeText(this, "解析结果:" + result, Toast.LENGTH_LONG).show(); } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) { Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show(); } } } ``` 怎么样是不是很简单?下面我们可以来看一下具体的执行效果: **执行效果:** ![image](https://github.com/yipianfengye/android-zxingLibrary/blob/master/images/ezgif.com-video-to-gif%20(2)%2015.33.08.gif) 但是这样的话是不是太简单了,如果我想选择图片解析呢?别急,对二维码图片的解析也是支持的 - **集成对二维码图片的解析功能** - 调用系统API打开图库 ``` Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); startActivityForResult(intent, REQUEST_IMAGE); ``` - 在Activity的onActivityResult方法中获取用户选中的图片并调用二维码图片解析API ``` if (requestCode == REQUEST_IMAGE) { if (data != null) { Uri uri = data.getData(); ContentResolver cr = getContentResolver(); try { Bitmap mBitmap = MediaStore.Images.Media.getBitmap(cr, uri);//显得到bitmap图片 CodeUtils.analyzeBitmap(mBitmap, new CodeUtils.AnalyzeCallback() { @Override public void onAnalyzeSuccess(Bitmap mBitmap, String result) { Toast.makeText(MainActivity.this, "解析结果:" + result, Toast.LENGTH_LONG).show(); } @Override public void onAnalyzeFailed() { Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show(); } }); if (mBitmap != null) { mBitmap.recycle(); } } catch (Exception e) { e.printStackTrace(); } } ``` **执行效果** ![image](http://img.blog.csdn.net/20160727170831543) 有了默认的二维码扫描界面,也有了对二维码图片的解析,可能有的同学会说如果我想定制化显示UI怎么办呢?没关系也支持滴。 - **定制化显示扫描UI** 由于我们的扫描组件是通过Fragment实现的,所以能够很轻松的实现扫描UI的定制化。 - 在新的Activity中定义Layout布局文件 ```