<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx"xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView"><fx:Declarations><!-- Place non-visual elements (e.g., services, value objects) here --></fx:Declarations><fx:Script><![CDATA[import com.google.zxing.BarcodeFormat;import com.google.zxing.BinaryBitmap;import com.google.zxing.BufferedImageLuminanceSource;import com.google.zxing.DecodeHintType;import com.google.zxing.Result;import com.google.zxing.client.result.ParsedResult;import com.google.zxing.client.result.ResultParser;import com.google.zxing.common.BitMatrix;import com.google.zxing.common.ByteMatrix;import com.google.zxing.common.GlobalHistogramBinarizer;import com.google.zxing.common.flexdatatypes.HashTable;import com.google.zxing.qrcode.QRCodeReader;import com.google.zxing.qrcode.detector.Detector;import spark.events.ViewNavigatorEvent;protected var camera:Camera;private var videoDisplay:Video=new Video(360, 360);private var qrReader:QRCodeReader;private var bmd:BitmapData;private var cameraStarted:Boolean = false;protected function button1_clickHandler(event:MouseEvent):void{if (!cameraStarted) {if (Camera.isSupported){camera=Camera.getCamera();camera.setMode(360, 360, 24);videoDisplay.x = 360;sv.addChild(videoDisplay);videoDisplay.attachCamera(camera);videoDisplay.rotation=90;qrReader=new QRCodeReader;btn.label = "Scan Now";lbl.text = "";cameraStarted = true;}else {lbl.text = "no camera found";}}else {decodeSnapshot();}}public function decodeSnapshot():void{lbl.text="checking...";bmd=new BitmapData(300, 300);bmd.draw(videoDisplay, null, null, null, null, true);videoDisplay.cacheAsBitmap=true;videoDisplay.cacheAsBitmapMatrix=new Matrix;decodeBitmapData(bmd, 300, 300);bmd.dispose();bmd=null;System.gc();}public function decodeBitmapData(bmpd:BitmapData, width:int, height:int):void{var lsource:BufferedImageLuminanceSource=new BufferedImageLuminanceSource(bmpd);var bitmap:BinaryBitmap=new BinaryBitmap(new GlobalHistogramBinarizer(lsource));var ht:HashTable=null;ht=this.getAllHints();var res:Result=null;try {res=qrReader.decode(bitmap, ht);}catch (event:Error) {}if (res == null) {videoDisplay.clear();lbl.text="nothing decoded";}else {var parsedResult:ParsedResult=ResultParser.parseResult(res);lbl.text=parsedResult.getDisplayResult();sv.removeChild(videoDisplay);cameraStarted = false;btn.label = "Start Camera";}}public function getAllHints():HashTable{var ht:HashTable=new HashTable;ht.Add(DecodeHintType.POSSIBLE_FORMATS, BarcodeFormat.QR_CODE);return ht;}]]></fx:Script><s:VGroup width="100%" horizontalAlign="center" id="vg"><s:SpriteVisualElement id="sv" width="360" height="400"/><s:Label id="lbl" text="" /><s:Button id="btn" label="Start Camera" width="220" height="93" click="button1_clickHandler(event)"/></s:VGroup>
</s:View>

public function decodeSnapshot():void
{lbl.text="checking...";bmd=new BitmapData(300, 300);bmd.draw(videoDisplay, null, null, null, null, true);videoDisplay.cacheAsBitmap=true;videoDisplay.cacheAsBitmapMatrix=new Matrix;decodeBitmapData(bmd, 300, 300);bmd.dispose();bmd=null;System.gc();
}public function decodeBitmapData(bmpd:BitmapData, width:int, height:int):void
{var lsource:BufferedImageLuminanceSource=new BufferedImageLuminanceSource(bmpd);var bitmap:BinaryBitmap=new BinaryBitmap(new GlobalHistogramBinarizer(lsource));var ht:HashTable=null;ht=this.getAllHints();var res:Result=null;try {res=qrReader.decode(bitmap, ht);}catch (event:Error) {}if (res == null) {videoDisplay.clear();lbl.text="nothing decoded";}else {var parsedResult:ParsedResult=ResultParser.parseResult(res);lbl.text=parsedResult.getDisplayResult();sv.removeChild(videoDisplay);cameraStarted = false;btn.label = "Start Camera";}
}public function getAllHints():HashTable
{var ht:HashTable=new HashTable;ht.Add(DecodeHintType.POSSIBLE_FORMATS, BarcodeFormat.QR_CODE);return ht;
}

if (Camera.isSupported)
{camera=Camera.getCamera();camera.setMode(360, 360, 24);videoDisplay.x = 360;sv.addChild(videoDisplay);videoDisplay.attachCamera(camera);videoDisplay.rotation=90;qrReader=new QRCodeReader;btn.label = "Scan Now";lbl.text = "";cameraStarted = true;
}
else {lbl.text = "no camera found";
}

转载于:https://www.cnblogs.com/ggzjj/p/3612850.html

Adding a QR Code Reader in Flex on Android相关推荐

  1. 二维码QR Code简介及其解码实现(zxing-cpp)

    二维码QR Code(Quick Response Code)是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大.可靠性高.可表示汉字及图象多种 ...

  2. 关于java生成二维码:QR Code

    QR Code的生成和读取在两个文件: 生成:QRcode​​​​​qrcode encoder (cgi programs/libralies) , QRcode demo and document ...

  3. C# WinForm创建QR Code测试

    完整效果如下图: 实现的功能: 1. 创建QR Barcode 2. 把QR Barcode存储到文件 3. 读取存储的QR Code文件内容 4. 创建vCard 个人电子名片 首先添加Zxing ...

  4. Delphi xe7 FireMonkey / Mobile (Android, iOS)生成 QR Code完整实例

    这个实例在windows.OS X.IOS和Android等平台运行正常. 本文参考这个网站提供的方法:http://zarko-gajic.iz.hr/firemonkey-mobile-andro ...

  5. wechaty QR code not recognizable..

    You need to copy the URL of QR code to web browser and scan from there... This one is NOT good

  6. Adding a horizontal separator to a Flex PopUpButton control’s pop up menu (redux)

    Adding a horizontal separator to a Flex PopUpButton control's pop up menu (redux) http://blog.flexex ...

  7. 二维码QR Code不是一个产品,是一个功能

    2019独角兽企业重金招聘Python工程师标准>>> 台湾有许多公司,开始跨入 QR Code 的相关应用,热度开始逐渐上升.最近有幸跟许多在这方面有兴趣的朋友们聊天,得到了很多的 ...

  8. Create QR Code

    Create QR Code Generate QR Codes using Google's Chart API. Text to embed in QR Code Image Size :   1 ...

  9. 【Android QR Code】开源项目:ZXing(一)导入项目

    维基百科:QR Code http://en.wikipedia.org/wiki/QR_code 开源项目:ZXing http://code.google.com/p/zxing/ 1.下载源代码 ...

最新文章

  1. TensorFlow 制作自己的TFRecord数据集
  2. (已加马赛克)10 行代码判定色*情*图片——Python 也可以系列之二
  3. 2013年度10大Android应用
  4. SQL2005中的XXproperty() 函数归纳
  5. android string 转成json对象_Android开发:生成桌面快捷方式是这样做的
  6. 《看聊天记录都学不会Python到游戏实战?太菜了吧》(7)我用函数写了个特洛伊木马
  7. linux定时结束java进程_使用zt-exec库定时清理linux休眠进程
  8. oracle导入字符集,Oracle导入字符集问题
  9. 一篇不大正经的关于数论的总结(未完
  10. docker教程_2 docker常见命令
  11. java.net.InetAddress 获取系统 MAC 地址 与 IP 地址
  12. java 静态变量锁_线程中锁方法和静态变量的锁
  13. 自定义控件2.第一个自定义view
  14. 度假村酒店官方网站模板里面包含7个子页面,适合酒店住宿网站模板下载
  15. 顶级赛事!2021 CCF大数据与计算智能大赛强势来袭~
  16. 【转】成像的清晰度、分辨率和锐度
  17. nodejs 将对象转化为query(URLSearchParams)
  18. HBase的协处理器(Coprocessor)、HBase如何使用二级索引、observer协处理器、 endpoint协处理器、Hbase 协处理器加载方式
  19. JavaWeb学习笔记(JavaScript)
  20. 华为ensp 错误代码 :40

热门文章

  1. scrolling=no 无法根据坐标获取元素_汽车制造行业如何选择三坐标测量仪?
  2. java语言环境变量_JAVA语言环境变量的设置教程
  3. 计算机音乐戏子多秋,抖音戏子多秋是什么歌
  4. 主流家用计算机,年终聊装机 主流家用电脑怎么选CPU?
  5. python采用解释方式执行_Python初学(一)
  6. python中adb连接手机_Python脚本利用adb进行手机控制的方法
  7. 计算机应用能力考试xp,全国专业技术人员计算机应用能力考试XP
  8. 图像分割:Python的SLIC超像素分割
  9. 1.(基于欧式距离聚类实现的点云分割)
  10. LabVIEW做一款科学计算器