转:Android zxing(上)
来源:互联网 发布:李永强的交易软件 编辑:程序博客网 时间:2024/06/09 16:10
二维码一般在项目都会用到,今天分享下我开发二维码的一些心得。
zxing介绍
github地址:https://github.com/zxing/zxing
代码很多,官方演示的例子在文件android,一个较为完整的app,导入Android studio,发现少了CameraConfigurationUtils,这个类在文件android-core下。官方效果图:
但是实际开发只需要扫码和生成二维码两个功能就夠了,因此我做了抽离删减,最终我的效果图:
zxing使用
添加依赖
1
compile 'com.google.zxing:core:3.2.1'
扫描二维码
1234
case R.id.qrcode_dencode: //扫描intent = new Intent(MainActivity.this, CaptureActivity.class);startActivityForResult(intent, REQUEST_CODE);break;
123456789
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { //RESULT_OK = -1 Bundle bundle = data.getExtras(); String scanResult = bundle.getString("result"); Toast.makeText(MainActivity.this, scanResult, Toast.LENGTH_LONG).show(); } }
生成二维码
123456789
case R.id.qrcode_encode: //生成try { Bitmap mBitmap = QRCodeEncoder.encodeAsBitmap("http://wuxiaolong.me/", 300); qrcodeImg.setImageBitmap(mBitmap); } catch (Exception e) { e.printStackTrace(); } break;
识别二维码
1234567891011
//长按图片识别二维码 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; } });
1234567891011121314151617181920212223242526272829303132
/** * 解析二维码图片 * * @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://wuxiaolong.me/2016/04/22/zxing/#rd?sukey=fa67fe3435f5c4be98836cf66dcb29ede88d6bfa41359bf2e61470ce9a423fafef157ff2b4dba387854f05c4d1efbbfe
0 0
- 转:Android zxing(上)
- 在Android上使用ZXing识别条形码/二维码(转)
- 在Android上使用ZXing识别条形码/二维码(转)
- android zxing
- android zxing
- 在Android上使用ZXing识别条形码/二维码
- 在Android上使用ZXing识别条码/二维码
- 在Android上使用ZXing识别条码 二次开发笔记
- 在Android上使用ZXing识别条形码/二维码
- 在Android上使用ZXing识别条形码/二维码
- 在Android上使用ZXing识别条形码/二维码
- 在Android上使用ZXing识别条形码/二维码
- 在Android上使用ZXing识别条码/二维码
- 在Android上使用ZXing识别条形码/二维码
- 在Android上使用ZXing识别条形码/二维码
- 在Android上使用ZXing识别条形码/二维码
- 在Android上使用ZXing识别条形码/二维码
- 在Android上使用ZXing识别条形码/二维码
- Swift快速入门之getter 和 setter
- 学艺不精,痛定思痛
- 工作中最麻烦的事——北漂18年(52)
- 如何在你的应用中正确使用Context
- Android之Sqlite,SQLiteOpenHelper的使用
- 转:Android zxing(上)
- IOS学习笔记(五)之正式协议
- uva 108 Maximum Sum
- uva 10074 Take the Land
- 关系型数据库工作原理-归并排序(翻译自Coding-Geek文章)
- ios学习笔记(六)之回调函数
- 第4周 C语言及程序设计提高例程-20 经典:查找的艺术
- Matlab-----让同一个坐标轴上的两个字母,一个斜体,一个正体
- 三和韓長庚 著 易學原理總論 對讀 001_020