zxing二维码扫描
2016-04-22 16:52
176 查看
zxing介绍
github地址:https://github.com/zxing/zxing代码很多,官方演示的例子在文件android,一个较为完整的app,导入Android studio,发现少了CameraConfigurationUtils,这个类在文件android-core下。官方效果图:
但是实际开发只需要扫码和生成二维码两个功能就夠了,因此我做了抽离删减,最终我的效果图:
zxing使用
添加依赖
1 | compile 'com.google.zxing:core:3.2.1' |
扫描二维码
12 | case R.id.qrcode_dencode: //扫描 intent = new Intent(MainActivity.this, CaptureActivity.class); startActivityForResult(intent, REQUEST_CODE); break; |
12 | @Override |
生成二维码
12 | case R.id.qrcode_encode: //生成 try { Bitmap mBitmap = QRCodeEncoder.encodeAsBitmap("http://wuxiaolong.me/", 300); qrcodeImg.setImageBitmap(mBitmap); } catch (Exception e) { e.printStackTrace(); } break; |
识别二维码
12 | //长按图片识别二维码 qrcodeImg.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { qrcodeImg.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(qrcodeImg.getDrawingCache()); qrcodeImg.setDrawingCacheEnabled(false); decodeQRCode(bitmap); return true; } }); |
12 | /** * 解析二维码图片 * * @param bitmap 要解析的二维码图片 */ public final Map<DecodeHintType, Object> HINTS = new EnumMap<>(DecodeHintType.class); public void decodeQRCode(final Bitmap bitmap) { new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... params) { try { int width = bitmap.getWidth(); int height = bitmap.getHeight(); int[] pixels = new int[width * height]; bitmap.getPixels(pixels, 0, width, 0, 0, width, height); RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels); Result result = new MultiFormatReader().decode(new BinaryBitmap(new HybridBinarizer(source)), HINTS); return result.getText(); } catch (Exception e) { return null; } } @Override protected void onPostExecute(String result) { Log.d("wxl", "result=" + result); Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); } }.execute(); } |
另外,ViewfinderView自定义属性参考了http://my.oschina.net/smuswc/blog/609413?fromerr=RgSd7WKf
源码
官方的例子和我自己的抽离出的代码都上传github了,地址:https://github.com/WuXiaolong/zxingSample原文地址:http://www.cnblogs.com/soaringEveryday/p/4607438.html
相关文章推荐
- SOAP学习,构建实际的报文格式
- 骁龙820处理器,眩晕感极低,重300g佩戴无压迫感,Pico NeoVR一体机,顶配售价3399元
- Linux(Ubuntu) 新手安装JDK,一步一步实现(详解)
- android在线源码查看http://androidxref.com/
- MATLAB编程常用基础语句积累,方便自己编程!
- app原型设计工具-墨刀
- cellforrowatindexpath 不执行 的原因
- 支付系统各接口总结
- 学习笔记之深入浅出MFC 第7章 进程与线程(Process and Thread)
- 安装kali2.0之后,如何从Windows中通过SecureCRT工具远程到kali中呢?
- Line belt
- [MED]features
- error C4996: 'sprintf': This function or variable may be unsafe 解决方法
- Android 中的onKeyDown
- iOS MJRefresh 刷新
- Java开发必装的IntelliJ IDEA插件
- SQL Server :事务和锁
- mysql 5.1安装报错
- JVM运行时数据区域分析
- log4j配置