梁子财
基于Qt for Android二维码扫描软件开发
梁子财
(华中科技大学 中欧清洁与可再生能源学院,湖北 武汉 430074)
随着互联网的快速发展,移动支付正在替代传统支付方式成为最常用的支付方式。目前的移动支付较多采用手机扫描二维码进行支付操作。基于Qt for Android开发了一款二维码扫描软件,为基于手机二维码扫描识别技术提供了借鉴。
Qt for Android;二维码扫描;Android软件;软件开发
随着智能手机与互联网的快速发展,移动终端用户激增,移动终端成为从互联网获取信息和服务的一种重要手段[1]。移动支付也正在替代传统支付方式成为最常用的支付手段[2]。目前的移动支付较多采用手机扫描二维码进行支付操作。Qt for Android是用于在Android上进行开发的Qt平台,利用该平台可以使用C++语言开发Android软件。
笔者开发了一款基于QT for Android的二维码扫描软件,用户可以利用该软件对二维码进行扫描识别。
通常手机识别二维码有两种方式,一种是利用手机相机对二维码进行扫描识别,另一种是打开手机相册直接读取二维码照片进行识别。但是Qt平台没有直接调用安卓手机相机与相册的接口,需要通过JNI接口调用JAVA程序来间接调用手机相机与相册。
因此本软件的设计分为两部分,一部分是摄像头扫描模块,另一部分是相册读取模块,如图1所示。
图1 二维码扫描软件的模块划分
摄像头扫描模块需要实现两部分功能:①基于QML语言设计扫描动画、定位框与蒙影;②基于JNI接口调用安卓手机摄像头读取相机数据。相册模块只需利用JNI接口调用安卓手机原生相册浏览界面,让用户选择带读取照片即可。
两种模块扫描二维码之后需要对二维码进行解码。笔者利用QZXing库进行二维码解码,部分实行代码如下:
// 调用QZXing的函数进行二维码扫描
QZXing decoder;
QString qrmsg=decoder.decodeImage(img,iWidth,iHeight,false);
摄像头扫描模块分为两部分,一部分是设计扫描动画、定位框等,另一部分是调用安卓手机相机读取相机数据。
QML是一种陈述性语言,用来描述一个程序的用户界面:是什么样子以及它如何表现。笔者利用QML语言设计二维码扫描的动画、定位框等,效果如图2所示。
图2 二维码扫描界面效果
绘制定位框的QML代码如下:
//画右上的边角
t没有直接调用安卓手机相机的接口,因此需要利用JNI接口调用安卓手机相机。在软件开启时,系统会自动调用函数checkPermission("android.permission.CAMERA")获取开启相机的权限,之后在QML代码中添加相机录像显示代码,如下所示:
相册模块利用JNI接口调用安卓手机原生相册浏览界面,让用户选择带读取照片,其界面效果如图3所示。
图3 相册界面效果
调用JNI接口实现打开手机相册的代码如下:
笔者基于Qt for Android开发了一款二维码扫描Android软件,为基于手机二维码扫描识别技术提供借鉴,同时通过实验验证,证明该软件能迅速读取二维码数据,具有实用性。
[1]罗军舟,吴文甲,杨明.移动互联网:终端、网络与服务[J].计算机学报,2011,34(11):2029-2051.
[2]曹婷,梁婧婕,吕璞鑫,等.移动支付对大学生消费的影响探析[J].中国商论,2016(14):95-96.
TP311.52
A
10.15913/j.cnki.kjycx.2019.17.043
2095-6835(2019)17-0095-02
梁子财(1993—),男,福建泉州人,在读硕士,研究方向为生产物流系统仿真优化与数控软件开发。
〔编辑:王霞〕