程序源代码及可执行文件下载地址:http://files.cnblogs.com/rainboy2010/zbardemo.zip

Android下常用的条码扫描类库有zxing和zbar,比较了一下,发现zbar扫描速度更快,能够识别的条码类型更多,下面就讲解一下如何利用zbar实现扫一扫,先放上一张效果图:

主要代码如下:

1.在onPreviewFrame方法里获取预览图像,然后传递给DecodeHandler去解析

  1. @Override
  2. public void onPreviewFrame(byte[] data, Camera camera)
  3. {
  4. if (!useOneShotPreviewCallback)
  5. {
  6. camera.setPreviewCallback(null);
  7. }
  8. if(previewHandler != null)
  9. {
  10. Camera.Parameters parameters = camera.getParameters();
  11. Size size = parameters.getPreviewSize();
  12. Message message = previewHandler.obtainMessage(previewMessage, size.width,size.height, data);
  13. message.sendToTarget();
  14. previewHandler = null;
  15. }
  16. else
  17. {
  18. Log.d(TAG, "Got preview callback, but no handler for it");
  19. }
  20.  
  21. }

2. 在decode方法里调用zbar类库对图像进行解析

  1. private void decode(byte[] data, int width, int height) {
  2.  
  3. Image barcode = new Image(width, height, "Y800");
  4. Rect scanImageRect = activity.getViewfinderView().getScanImageRect(height,width);
  5. barcode.setCrop(scanImageRect.top, scanImageRect.left, scanImageRect.bottom, scanImageRect.right);
  6. barcode.setData(data);
  7.  
  8. int result = scanner.scanImage(barcode);
  9. String strResult="";
  10. if (result != 0)
  11. {
  12. SymbolSet syms = scanner.getResults();
  13. for (Symbol sym : syms)
  14. {
  15. strResult=sym.getData().trim();
  16. if(!strResult.isEmpty())
  17. {
  18. break;
  19. }
  20. }
  21. }
  22.  
  23. if(!strResult.isEmpty())
  24. {
  25. Message message = Message.obtain(activity.getHandler(), R.id.decode_succeeded, strResult);//Message信息传来传去,有点绕
  26. Log.d(TAG, "Sending decode succeeded message...");
  27. message.sendToTarget();
  28. }
  29. else
  30. {
  31. Message message = Message.obtain(activity.getHandler(), R.id.decode_failed);
  32. message.sendToTarget();
  33. }
  34. }

  

Android下利用zbar类库实现扫一扫的更多相关文章

  1. Android下利用zxing类库实现扫一扫

    程序源代码及可执行文件下载地址:http://files.cnblogs.com/rainboy2010/zxingdemo.zip zxing,一款无比强大的条码解析类库,下面讲解一下如何利用zxi ...

  2. Android下利用Bitmap切割图片

    在自己自定义的一个组件中由于需要用图片显示数字编号,而当前图片就只有一张,上面有0-9是个数字,于是不得不考虑将其中一个个的数字切割下来,需要显示什么数字,只需要组合一下就好了. 下面是程序的关键代码 ...

  3. android 下 利用webview实现浏览器功能

    android 下 利用webview实现浏览器功能(一): 1.界面添加WEBVIEW控件. 2.在界面.JAVA代码页面(protected void onCreate(Bundle savedI ...

  4. Android下利用SQLite数据库实现增删改查

    1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3:  sqlite3 数据库 4   接下来就可以进行数据库的sql语法 ...

  5. Android下利用RadioGroup和RadioButton实现Tabbar的效果

    本实现方法主要使用RadioGroup和RadioButton的组合方式来实现Tabbar的效果. 其中选中的Tab的切换的动作可以通过RadioGroup的OnCheckedChangeListen ...

  6. android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)

    写在最前(这是对上一篇博文的问题做的更新[android利用zbar二维码扫描]) project下载   zbarLib编译project  project下载0积分 bug 在2.3的系统中Hol ...

  7. Android平台下利用zxing实现二维码开发

    Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...

  8. (转载)Android平台下利用zxing实现二维码开发

    Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...

  9. 【转】Android 源码下利用jni编译自己的项目(参考系统development/samples/SimpleJNI)

    原文网址:http://blog.csdn.net/qiuxiaolong007/article/details/7860481 记于正文前:环境是ubuntu10.10,android 源码是2.0 ...

随机推荐

  1. 细说logback之简介

    官网:https://logback.qos.ch/https://logback.qos.ch/manual/index.html logback手册1.下载logback是slf4j的原生实现,所 ...

  2. Kettle系列: kettle标准化trans模板

    =============================主控trans + sub trans 模式=============================针对一个具体的处理任务(比如增量加载一个 ...

  3. udp_client函数

    #include <netdb.h> #include <stdlib.h> #include <string.h> #include <sys/socket ...

  4. luogu P2144 [FJOI2007]轮状病毒

    传送门 随便摸一发题解算了 打表找规律 前五个答案是 1 5 16 45 121 其实是 1^2 3^2-4 4^2 7^2-4 11^2 底数就是类似于斐波那契数列,还有偶数项要减4 #includ ...

  5. 实现两线程的同步二(lockSupport的park/unpark)

    1.使用LockSupport的part/unpark实现 package com.ares.thread; import java.util.concurrent.locks.LockSupport ...

  6. 事件对象event

    每个事件都有默认事件event对象 e.target 事件目标对象 e.keycode 键码 e.stopPropogation();//阻止默认事件

  7. 在eclipse中从cvs下载项目,再部署到tomcat常见错误!

    1.先调出cvs视图 如果cvs插件还未安装,下载一个: 安装cvs插件:将features和pluguns文件夹里面的内容分别复制到eclipse安装路径下面对应的features和pluguns文 ...

  8. linux 如何保持兼容性

    参考链接:   https://www.cnblogs.com/MYSQLZOUQI/p/5383594.html

  9. day 5 - 1 字典(dict)

    dict dict key 必须是不可变数据类型,可哈希value:任意数据类型 dict 优点:使用二分查询来搜索数据存储了大量的关系型数据特点:无序的 数据类型划分:可变数据类型,不可变数据类型不 ...

  10. sublime text 3 左侧目录树中文文件夹显示方框问题解决

    0 - 解决方法 打开Preferences->Settings 在弹出的Settings对话框中,加入"dpi_scale": 1.0 重新启动sublime text 3 ...