基于Qt for Android二维码扫描软件开发

2019-09-21 01:19梁子财
科技与创新 2019年17期
关键词:调用安卓界面

梁子财

基于Qt for Android二维码扫描软件开发

梁子财

(华中科技大学 中欧清洁与可再生能源学院,湖北 武汉 430074)

随着互联网的快速发展,移动支付正在替代传统支付方式成为最常用的支付方式。目前的移动支付较多采用手机扫描二维码进行支付操作。基于Qt for Android开发了一款二维码扫描软件,为基于手机二维码扫描识别技术提供了借鉴。

Qt for Android;二维码扫描;Android软件;软件开发

1 引言

随着智能手机与互联网的快速发展,移动终端用户激增,移动终端成为从互联网获取信息和服务的一种重要手段[1]。移动支付也正在替代传统支付方式成为最常用的支付手段[2]。目前的移动支付较多采用手机扫描二维码进行支付操作。Qt for Android是用于在Android上进行开发的Qt平台,利用该平台可以使用C++语言开发Android软件。

笔者开发了一款基于QT for Android的二维码扫描软件,用户可以利用该软件对二维码进行扫描识别。

2 软件的总体设计

通常手机识别二维码有两种方式,一种是利用手机相机对二维码进行扫描识别,另一种是打开手机相册直接读取二维码照片进行识别。但是Qt平台没有直接调用安卓手机相机与相册的接口,需要通过JNI接口调用JAVA程序来间接调用手机相机与相册。

因此本软件的设计分为两部分,一部分是摄像头扫描模块,另一部分是相册读取模块,如图1所示。

图1 二维码扫描软件的模块划分

摄像头扫描模块需要实现两部分功能:①基于QML语言设计扫描动画、定位框与蒙影;②基于JNI接口调用安卓手机摄像头读取相机数据。相册模块只需利用JNI接口调用安卓手机原生相册浏览界面,让用户选择带读取照片即可。

两种模块扫描二维码之后需要对二维码进行解码。笔者利用QZXing库进行二维码解码,部分实行代码如下:

// 调用QZXing的函数进行二维码扫描

QZXing decoder;

QString qrmsg=decoder.decodeImage(img,iWidth,iHeight,false);

3 摄像头扫描模块设计

摄像头扫描模块分为两部分,一部分是设计扫描动画、定位框等,另一部分是调用安卓手机相机读取相机数据。

3.1 基于QML设计扫描界面

QML是一种陈述性语言,用来描述一个程序的用户界面:是什么样子以及它如何表现。笔者利用QML语言设计二维码扫描的动画、定位框等,效果如图2所示。

图2 二维码扫描界面效果

绘制定位框的QML代码如下:

//画右上的边角

3.2 基于JNI调用手机相机

t没有直接调用安卓手机相机的接口,因此需要利用JNI接口调用安卓手机相机。在软件开启时,系统会自动调用函数checkPermission("android.permission.CAMERA")获取开启相机的权限,之后在QML代码中添加相机录像显示代码,如下所示:

4 相册读取模块设计

相册模块利用JNI接口调用安卓手机原生相册浏览界面,让用户选择带读取照片,其界面效果如图3所示。

图3 相册界面效果

调用JNI接口实现打开手机相册的代码如下:

5 总结

笔者基于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—),男,福建泉州人,在读硕士,研究方向为生产物流系统仿真优化与数控软件开发。

〔编辑:王霞〕

猜你喜欢
调用安卓界面
iPhone不卡的秘密曝光:安卓也能享受
不同截面类型钢管RPC界面粘结性能对比研究
微重力下两相控温型储液器内气液界面仿真分析
国企党委前置研究的“四个界面”
文物表情包
安卓系统或成智能汽车标配
基于Android Broadcast的短信安全监听系统的设计和实现
安卓机器人
利用RFC技术实现SAP系统接口通信
C++语言中函数参数传递方式剖析