zxing二维码
来源:互联网 发布:徐静蕾开淘宝店么 编辑:程序博客网 时间:2024/05/18 03:19
1 Manifest文件中申请相应的权限
需要注意的是Android 6.0及以上系统需要动态申请权限,不做申请权限处理可能读取不了本地相册的二维码也生成不了二维码。
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2 导入三方库
compile ‘cn.yipianfengye.android:zxing-library:2.1’
3 在Application中或者相应的Activity初始化
ZXingLibrary.initDisplayOpinion(this);
4 具体使用说明
关于二维码主要有以下操作
1 普通扫描并获取二维码的信息
2 从本地相册中选取图片扫描获取二维码的信息
3 生成含有二维码的图片
页面布局如下
4.1 开始扫描
startActivityForResult(new Intent(MainActivity.this, CaptureActivity.class),RESULT_OK);
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RESULT_OK) { 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); textView.setText(result); } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) { textView.setText("解析失败!"); } } } }
4.2 从图库中选择
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); startActivityForResult(intent, REQUEST_IMAGE);
同样是在onActivityResult方法中获取回调
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(getPath(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(); } } }
注意这时候在6.0以上系统中需要动态申请权限,不然的话无法成功返回
//获取Bitmap的文件地址 public String getPath(Bitmap bm) throws IOException { String path = Environment.getExternalStorageDirectory()+"/quickCode/"; File dirFile = new File(path); File file = new File(path+"h.png"); if(!dirFile.exists()){ dirFile.mkdirs(); } if(!file.exists()){ file.createNewFile(); } BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); bm.compress(Bitmap.CompressFormat.JPEG, 80, bos); bos.flush(); bos.close(); return path+"h.png"; }
4.3 生成图片
生成一个带logo的二维码
String textContent = "我是梁超杰"; Bitmap mBitmap = CodeUtils.createImage(textContent, 400, 400, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); imageView.setImageBitmap(mBitmap);
生成一个不带logo的二维码
String textContent = "我是梁超杰"; Bitmap mBitmap = CodeUtils.createImage(textContent, 400, 400, BitmapFactory.decodeResource(getResources(), null)); imageView.setImageBitmap(mBitmap);
5 文章结尾附上本demo的github地址
QuickCodeDemo
如果对二维码还需要进行特殊处理,学习一些骚操作可以看看以下两篇博客
ZXING-二维码扫面
使用ZXing实现二维码扫描
阅读全文
0 0
- ZXing 二维码
- Zxing二维码
- zxing 二维码
- zxing二维码
- ZXing二维码
- 二维码 zxing
- 二维码ZXing
- ZXing二维码
- Zxing二维码
- zxing二维码
- 【Zxing】二维码ZXing
- 手机二维码~~~ZXing简介
- 手机二维码~~~ZXing简介
- Zxing二维码扫描器测试
- 一维码,二维码,zxing
- zxing二维码识别
- zxing二维码识别2
- zxing二维码识别3
- Android基础之Android四大组件
- 开发者所需要知道的 iOS 11 SDK 新特性
- B-1020
- 算法导论第六章堆排序算法实现
- Java?Kotlin?Kotlin!
- zxing二维码
- 修改路由器密码遇到的bug( ▼-▼ )
- Leetcode 1 Two Sum
- 阿里云服务器部署tomcat后外网无法访问
- wait/notify实现生产消费过程
- html中常用的矢量图标网站
- ubuntu/windoes下串口调试、telnet、ssh工具
- CNN中权值共享理解
- Leetcode 7 Reverse Integer