- 浏览: 93653 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
sincerehui:
android二维码的编码与解码(图片解码与摄像头解码) -
nyh1006:
学习一下!
UIScrollView循环滚动 -
bravewly:
为啥扫不出结果呢?是我扫的方式不对么?
android二维码的编码与解码(图片解码与摄像头解码) -
messigoogle:
我说您这个也是跟eoe上的差不多吧,加载的Assert中的图片 ...
android瀑布流 -
gundumw100:
LazyScrollView是偶写的。欢迎使用。呵呵。http ...
android瀑布流
今天上网找了找可以从图片解析二维码 ,而不是从摄像头,找了半天,终于找到了居然不全,所以自己查资料,写了一个 可以生产二维码,并且从图片和摄像头都可以解析的demo。
二维码其实很简单,我用的是Google的ZXing的源代码(在后面的附件里有)。
下面来看一下代码,注释我已经写的很明白了,就不解释了。
生成二维码图片
// 生成QR图 private void encodeQRCode() { try { // 读取输入的String String text = qr_text.getText().toString(); Log.i(TAG, "生成的文本:" + text); if (text == null || "".equals(text) || text.length() < 1) { return; } // android二维码的编码与解码(图片解码与摄像头解码) // 实例化二维码对象 QRCodeWriter writer = new QRCodeWriter(); // 用一个map保存编码类型 Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); // 保持字符集为“utf-8” hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); /* * 第一个参数:输入的文本 * 第二个参数:条形码样式-》二维码 * 第三个参数:宽度 * 第四个参数:高度 * 第五个参数:map保存编码类型 */ BitMatrix bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints); System.out.println("w:" + bitMatrix.getWidth() + "h:" + bitMatrix.getHeight()); // 将像素保存在数组里 int[] pixels = new int[QR_WIDTH * QR_HEIGHT]; for (int y = 0; y < QR_HEIGHT; y++) { for (int x = 0; x < QR_WIDTH; x++) { if (bitMatrix.get(x, y)) {// 二维码黑点 pixels[y * QR_HEIGHT + x] = 0xff000000; } else {// 二维码背景白色 pixels[y * QR_HEIGHT + x] = 0xffffffff; } } } // 生成位图 Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888); /* * 第一个参数:填充位图的像素数组 * 第二个参数:第一个颜色跳过几个像素读取 * 第三个参数:像素的幅度 * 第四个参数:起点x坐标 * 第五个参数:起点y坐标 * 第六个参数:宽 * 第七个参数:高 */ bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT); // 显示图片 qr_image.setImageBitmap(bitmap); } catch (WriterException e) { e.printStackTrace(); } }
解析二维码图片:
// 解析QR图片 private void decodeQRCode() { Map<DecodeHintType, String> hints = new HashMap<DecodeHintType, String>(); hints.put(DecodeHintType.CHARACTER_SET, "utf-8"); Bitmap bitmap = ((BitmapDrawable) qr_image.getDrawable()).getBitmap(); RGBLuminanceSource source = new RGBLuminanceSource(bitmap); // 转成二进制图片 BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source)); // 实例化二维码解码对象 QRCodeReader reader = new QRCodeReader(); Result result; try { // 根据解码类型解码,返回解码结果 result = reader.decode(bitmap1, hints); System.out.println("res:》》》》》》》:" + result.getText()); // 显示解码结果 qr_result.setText(result.getText()); } catch (NotFoundException e) { e.printStackTrace(); } catch (ChecksumException e) { e.printStackTrace(); } catch (FormatException e) { e.printStackTrace(); } }
用摄像头解析就更简单了,直接Intent到ZXing中的CaptureActivity类 就OK了。
但是这样扫描完的二维码,自己也用不了呀。不用着急在CaptureActivity类的530行,也就是
// 条码/二维码结果 private void showResult(Result rawResult, ResultHandler resultHandler, Bitmap barcode) { AlertDialog.Builder builder = new AlertDialog.Builder(this); CharSequence displayContents = resultHandler.getDisplayContents(); if (barcode == null) { builder.setIcon(R.drawable.launcher_icon); } else { Drawable drawable = new BitmapDrawable(barcode); builder.setIcon(drawable); } builder.setTitle("Result"); builder.setMessage(displayContents); builder.setPositiveButton("OK",new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(CaptureActivity.this,CaptureActivity.class); startActivity(intent); } }); builder.setNegativeButton(R.string.button_cancel, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { CaptureActivity.this.finish(); } }); builder.show(); }
这个方法中把所有的扫描结果返回了。你可以根据自己的选择往下写逻辑就行了。
源码都在附件里,有兴趣的可以看一下。
发表评论
-
实现ScrollView的嵌套
2012-12-27 10:39 2101今天忽然需要写两个ScrollView嵌套,如: &l ... -
Android4.0新的SDK新特性 (汉化)
2012-10-31 15:40 1289Android 4.0 是一次重要的平台发布版,为用户和 ... -
Fragments (Android官方文档中文版)
2012-10-30 15:44 857原作者为: 苍山。感谢他分享的内容 概述 ... -
仿iphone实现两个view切换翻转动画
2012-10-26 14:59 2321看那些iPhone的view的切换效果非常帅,今天研究了一下从 ... -
android瀑布流
2012-10-26 10:54 2434今天研究了一下瀑布流,来说一下我实现它的方法。 看一下 ... -
Android 连接WIF获取的信息剖析
2012-10-10 13:48 1082Android的参数大致分成两块:系统服务参数和平台系统 ... -
android使用字体库更改字体
2012-07-27 15:34 1341TextView tv = (TextView) thi ... -
Android代码混淆的实践
2012-07-11 12:46 838开发 apk 的时候当然要考虑保护好自己的代码,Android ... -
给Android的音量按钮添加监听事件
2012-07-09 17:02 1326@Override public boolean onK ... -
去掉listview背景变黑和顶底部边缘模糊
2012-06-29 17:24 1148listview在滚动是背景变黑:android:cacheC ... -
Android 在OnCreate()中获取控件高度与宽度
2012-06-20 17:01 2873试过在OnCreate()中获取控件高度与宽度的童鞋都知道,g ... -
android EditText插入字符串到光标所在位置
2012-03-07 14:01 2149EditText mEditText = (EditText) ... -
android tabactivity view切换edittext不弹出软键盘的解决方案
2011-12-21 12:03 2093public void onFocusChange(View ... -
更改CheckBox的样式
2011-12-13 08:43 2340首先在styles.xml添加如下的自定义样式: <s ... -
Android中RatingBar的自定义效果
2011-11-16 10:14 1480有时候android系统提供给我们的ratingbar效果 ... -
TabHost点击按钮布局改变
2011-11-15 09:48 1002main.xml <?xml version=&quo ... -
android获得控件在屏幕中的绝对坐标
2011-11-10 12:56 2568int[] location = new int[2] ; ... -
手势识别
2011-11-10 09:29 835[功能] 何为手势识别? 比如:你在屏幕上从左至右划出的一个动 ... -
Android px和dip以及sp的区别及转换代码
2011-11-09 16:11 1575/** * 根据手机的分辨率从 dp 的单位 转成为 px ... -
android获取屏幕长宽,status bar高度,设置全屏显示
2011-11-09 16:08 1565//获取屏幕长宽 WindowManager wm = ...
相关推荐
QRCode.jar包和二维码编码与解码的实现
Qr 二维码 编码及解码 完整Eclipse项目,jdk1.5
这个是帮同学做完毕业设计后留下的东西,其实也就是到网上收集点资料整合下,不过支持android的资源真的很少,看在辛苦的份上,希望大家可怜点分点我,使用遇到问题的同学也可以联系我QQ:379754895,本人专职ios开发...
完整二维码编码和解码包,本人收集整合成一个包,并附带完整的工具方法和运行例子可直接使用到手机客户端或应用。 解压后,引用TwoDimCode.jar包,运行使用TwoDimCode.java 绝对超值,下载看看吧!
这是QR二维码的编码和解码程序,两个工程放在同一个工作空间中,便于大家学习,调试程序,已经在VC6.0下成功编译,运行正常。
在csdn下载的qrcode,在vs2010下编译总是有错,于是我重新封装了一下,win7+vs2010下测试通过。生成的二维码图片使用iphone4的识别软件准确无误,放上源代码,大家一起研究一下。
很简单的一个java二维码编码与解码的说明文档,只需要你创建一个java程序,将代码复制过去就能用,新手也能看明白哦
二维码编码解码器源码 本源码实现可以在C#中使用的1D/2D编码解码器。条形码的应用已经非常普遍,几乎所有超市里面的商品上面都印有条形码;二维码也开始应用到很多场合,如火车票有二维码识别、网易的首页有二维码...
Android平台的二维码生成和解码的源代码,基于开源zxing的代码,在eclipse下可以直接导入android项目,已经在模拟器和真机上测试过了,是学习和测试的不二之选
C#写的二维码编码类和二维码解码类,不调用任何控件,方便翻译成任何语言,可在任意平台上运行。 内有说明文档,说明怎样设置和调用,使用非常的方便,编码一个类,解码一个类,不像网上搜索的那些各种复杂不好用,...
一个能将网址编码成二维码或将二维码解码成网址的小工具。
java二维码编码解码测试 java QRCoder 二维码 编码 解码 java QRCoder 二维码 编码 解码
2012年最新二维码编码和解码程序套件,是开发二维条码生成和自动识别应用参考实例。自动识别PDF417、QRCODE、DataMatrix和HanXin条码图形,同时又能将文本、图像、声音和指纹混合编码,生成二维条码。二维码种类包括...
C#二维码编码解码器源码
软件的开发平台是.net 开发,开发环境是 vs2010 实现功能是 qr二维码编码 解码
Java实现二维码QRCode的编码和解码
涵盖了多种常用二维码编码,解码的代码,算是个总结
条形码和二维码编码和解码(通过引用zxing) 条形码:编码方式:EAN_13编码;EAN_8编码;Code39编码 二维码:编码方式:QRCode编码
二维码 java android 编码 解码 jar QRcode PDF417