星空网 > 软件开发 > 操作系统

二维码扫描 zxing源码分析(三)result、history部分

前两个部分的地址是:ZXING源码分析(一)CAMERA部分  、 zxing源码分析(二)decode部分
下面我们来看第三部分
result包下面有很多的类,其中的核心类是
com.google.zxing.client.android.result.ResultHandlerFactory:这个简单的工厂类,是整个result的所有的类的入口,我们就从这个类开始 
 
ResultHandlerFactory:
  这个类中有两个方法,分别是makeResultHandler()和parseResult()方法,makeResultHandler会调用parseResult方法,parseResult会
  调用core类的核心方法,parseResult这个方法是用来解析扫描二维码得到的结果是属于那 种类型的数据,调用后返回ParsedResult类,
  makeResultHandler方法就用到了getType()来判断扫描的结果是那一种类型的数据。
  返回结果类型数据主要有以下几种
 
public enum ParsedResultType { ADDRESSBOOK,   EMAIL_ADDRESS,  //网络 PRODUCT, URI,       //url类型 TEXT, GEO, TEL,      //电话 SMS,       CALENDAR, WIFI,       ISBN,}

  类型数据解析完成之后又回到CaptureActivity的handleDecode方法完成对数据的处理。
 
 因为parseResult()调用的是core.2.3.0的核心包的方法,下面我们再看看core.2.3.0的核心包中是怎么执行的
 parseResult()方法中调用是 ResultParser,这是一个抽象的类,用的也是简单工厂的方法,不过写法不一样
 下面看看它的核心属性和方法
  
 private static final ResultParser[] PARSERS = {   new BookmarkDoCoMoResultParser(),   new AddressBookDoCoMoResultParser(),   new EmailDoCoMoResultParser(),   new AddressBookAUResultParser(),   new VCardResultParser(),   new BizcardResultParser(),   new VEventResultParser(),   new EmailAddressResultParser(),   new SMTPResultParser(),   new TelResultParser(),   new SMSMMSResultParser(),   new SMSTOMMSTOResultParser(),   new GeoResultParser(),   new WifiResultParser(),   new URLTOResultParser(),   new URIResultParser(),   new ISBNResultParser(),   new ProductResultParser(),   new ExpandedProductResultParser(), }; public static ParsedResult parseResult(Result theResult) {  for (ResultParser parser : PARSERS) {   ParsedResult result = parser.parse(theResult);   if (result != null) {    return result;   }  }  return new TextParsedResult(theResult.getText(), null); }

 ResultParser[] 定义的是一个所有的返回类的数组,然后循环这个数组,去分别调用不同的类,直到返回结果

   不过看了 core.2.3.0的核心包方法,感觉应该把ParsedResult和ResultParser应该分别放在不同的包里,这样看着不会乱。
 
   下面我们再看看它的history部分是怎么操作的
   history界面主要是对数据库的操作,把得到的数据保存到barcode_scanner_history.db数据库中的history表中涉及到的类
   com.google.zxing.client.android.history.DBHelper 数据库类,建表操作
   com.google.zxing.client.android.history.HistoryActivity 外部调用的,用于显示页面
   com.google.zxing.client.android.history.HistoryManager ,用来对历史进行增删改查操作,控制数据库
   使用HistoryManager即可完成对历史记录的操作。这一部分相当来说比较简单,都是我们常用的功能

 




原标题:二维码扫描 zxing源码分析(三)result、history部分

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊德国VAT税率详解及申报指南:https://www.kjdsnews.com/a/1353039.html
欧洲VC账号被大量封禁?成整治重点?:https://www.kjdsnews.com/a/1353040.html
卡塔尔投资:https://www.kjdsnews.com/a/1353041.html
亚马逊首次公开销量数据,卖家如何把握商机?:https://www.kjdsnews.com/a/1353042.html
亚马逊欧洲VAT税率政策介绍:https://www.kjdsnews.com/a/1353043.html
亚马逊欧洲VAT税率德国16%政策详解:https://www.kjdsnews.com/a/1353044.html
无锡旅游景点竹海 - 无锡的竹海:https://www.vstour.cn/a/363178.html
5月贾汪好玩的地方 贾汪哪有好玩的地方:https://www.vstour.cn/a/363179.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流