Adding a QR Code Reader in Flex on Android
<?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相关推荐
- 二维码QR Code简介及其解码实现(zxing-cpp)
二维码QR Code(Quick Response Code)是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大.可靠性高.可表示汉字及图象多种 ...
- 关于java生成二维码:QR Code
QR Code的生成和读取在两个文件: 生成:QRcodeqrcode encoder (cgi programs/libralies) , QRcode demo and document ...
- C# WinForm创建QR Code测试
完整效果如下图: 实现的功能: 1. 创建QR Barcode 2. 把QR Barcode存储到文件 3. 读取存储的QR Code文件内容 4. 创建vCard 个人电子名片 首先添加Zxing ...
- Delphi xe7 FireMonkey / Mobile (Android, iOS)生成 QR Code完整实例
这个实例在windows.OS X.IOS和Android等平台运行正常. 本文参考这个网站提供的方法:http://zarko-gajic.iz.hr/firemonkey-mobile-andro ...
- 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
- 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 ...
- 二维码QR Code不是一个产品,是一个功能
2019独角兽企业重金招聘Python工程师标准>>> 台湾有许多公司,开始跨入 QR Code 的相关应用,热度开始逐渐上升.最近有幸跟许多在这方面有兴趣的朋友们聊天,得到了很多的 ...
- Create QR Code
Create QR Code Generate QR Codes using Google's Chart API. Text to embed in QR Code Image Size : 1 ...
- 【Android QR Code】开源项目:ZXing(一)导入项目
维基百科:QR Code http://en.wikipedia.org/wiki/QR_code 开源项目:ZXing http://code.google.com/p/zxing/ 1.下载源代码 ...
最新文章
- TensorFlow 制作自己的TFRecord数据集
- (已加马赛克)10 行代码判定色*情*图片——Python 也可以系列之二
- 2013年度10大Android应用
- SQL2005中的XXproperty() 函数归纳
- android string 转成json对象_Android开发:生成桌面快捷方式是这样做的
- 《看聊天记录都学不会Python到游戏实战?太菜了吧》(7)我用函数写了个特洛伊木马
- linux定时结束java进程_使用zt-exec库定时清理linux休眠进程
- oracle导入字符集,Oracle导入字符集问题
- 一篇不大正经的关于数论的总结(未完
- docker教程_2 docker常见命令
- java.net.InetAddress 获取系统 MAC 地址 与 IP 地址
- java 静态变量锁_线程中锁方法和静态变量的锁
- 自定义控件2.第一个自定义view
- 度假村酒店官方网站模板里面包含7个子页面,适合酒店住宿网站模板下载
- 顶级赛事!2021 CCF大数据与计算智能大赛强势来袭~
- 【转】成像的清晰度、分辨率和锐度
- nodejs 将对象转化为query(URLSearchParams)
- HBase的协处理器(Coprocessor)、HBase如何使用二级索引、observer协处理器、 endpoint协处理器、Hbase 协处理器加载方式
- JavaWeb学习笔记(JavaScript)
- 华为ensp 错误代码 :40
热门文章
- scrolling=no 无法根据坐标获取元素_汽车制造行业如何选择三坐标测量仪?
- java语言环境变量_JAVA语言环境变量的设置教程
- 计算机音乐戏子多秋,抖音戏子多秋是什么歌
- 主流家用计算机,年终聊装机 主流家用电脑怎么选CPU?
- python采用解释方式执行_Python初学(一)
- python中adb连接手机_Python脚本利用adb进行手机控制的方法
- 计算机应用能力考试xp,全国专业技术人员计算机应用能力考试XP
- 图像分割:Python的SLIC超像素分割
- 1.(基于欧式距离聚类实现的点云分割)
- LabVIEW做一款科学计算器