梁子財(cái)
基于Qt for Android二維碼掃描軟件開發(fā)
梁子財(cái)
(華中科技大學(xué) 中歐清潔與可再生能源學(xué)院,湖北 武漢 430074)
隨著互聯(lián)網(wǎng)的快速發(fā)展,移動(dòng)支付正在替代傳統(tǒng)支付方式成為最常用的支付方式。目前的移動(dòng)支付較多采用手機(jī)掃描二維碼進(jìn)行支付操作?;赒t for Android開發(fā)了一款二維碼掃描軟件,為基于手機(jī)二維碼掃描識別技術(shù)提供了借鑒。
Qt for Android;二維碼掃描;Android軟件;軟件開發(fā)
隨著智能手機(jī)與互聯(lián)網(wǎng)的快速發(fā)展,移動(dòng)終端用戶激增,移動(dòng)終端成為從互聯(lián)網(wǎng)獲取信息和服務(wù)的一種重要手段[1]。移動(dòng)支付也正在替代傳統(tǒng)支付方式成為最常用的支付手段[2]。目前的移動(dòng)支付較多采用手機(jī)掃描二維碼進(jìn)行支付操作。Qt for Android是用于在Android上進(jìn)行開發(fā)的Qt平臺,利用該平臺可以使用C++語言開發(fā)Android軟件。
筆者開發(fā)了一款基于QT for Android的二維碼掃描軟件,用戶可以利用該軟件對二維碼進(jìn)行掃描識別。
通常手機(jī)識別二維碼有兩種方式,一種是利用手機(jī)相機(jī)對二維碼進(jìn)行掃描識別,另一種是打開手機(jī)相冊直接讀取二維碼照片進(jìn)行識別。但是Qt平臺沒有直接調(diào)用安卓手機(jī)相機(jī)與相冊的接口,需要通過JNI接口調(diào)用JAVA程序來間接調(diào)用手機(jī)相機(jī)與相冊。
因此本軟件的設(shè)計(jì)分為兩部分,一部分是攝像頭掃描模塊,另一部分是相冊讀取模塊,如圖1所示。
圖1 二維碼掃描軟件的模塊劃分
攝像頭掃描模塊需要實(shí)現(xiàn)兩部分功能:①基于QML語言設(shè)計(jì)掃描動(dòng)畫、定位框與蒙影;②基于JNI接口調(diào)用安卓手機(jī)攝像頭讀取相機(jī)數(shù)據(jù)。相冊模塊只需利用JNI接口調(diào)用安卓手機(jī)原生相冊瀏覽界面,讓用戶選擇帶讀取照片即可。
兩種模塊掃描二維碼之后需要對二維碼進(jìn)行解碼。筆者利用QZXing庫進(jìn)行二維碼解碼,部分實(shí)行代碼如下:
// 調(diào)用QZXing的函數(shù)進(jìn)行二維碼掃描
QZXing decoder;
QString qrmsg=decoder.decodeImage(img,iWidth,iHeight,false);
攝像頭掃描模塊分為兩部分,一部分是設(shè)計(jì)掃描動(dòng)畫、定位框等,另一部分是調(diào)用安卓手機(jī)相機(jī)讀取相機(jī)數(shù)據(jù)。
QML是一種陳述性語言,用來描述一個(gè)程序的用戶界面:是什么樣子以及它如何表現(xiàn)。筆者利用QML語言設(shè)計(jì)二維碼掃描的動(dòng)畫、定位框等,效果如圖2所示。
圖2 二維碼掃描界面效果
繪制定位框的QML代碼如下:
//畫右上的邊角
t沒有直接調(diào)用安卓手機(jī)相機(jī)的接口,因此需要利用JNI接口調(diào)用安卓手機(jī)相機(jī)。在軟件開啟時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用函數(shù)checkPermission("android.permission.CAMERA")獲取開啟相機(jī)的權(quán)限,之后在QML代碼中添加相機(jī)錄像顯示代碼,如下所示:
相冊模塊利用JNI接口調(diào)用安卓手機(jī)原生相冊瀏覽界面,讓用戶選擇帶讀取照片,其界面效果如圖3所示。
圖3 相冊界面效果
調(diào)用JNI接口實(shí)現(xiàn)打開手機(jī)相冊的代碼如下:
筆者基于Qt for Android開發(fā)了一款二維碼掃描Android軟件,為基于手機(jī)二維碼掃描識別技術(shù)提供借鑒,同時(shí)通過實(shí)驗(yàn)驗(yàn)證,證明該軟件能迅速讀取二維碼數(shù)據(jù),具有實(shí)用性。
[1]羅軍舟,吳文甲,楊明.移動(dòng)互聯(lián)網(wǎng):終端、網(wǎng)絡(luò)與服務(wù)[J].計(jì)算機(jī)學(xué)報(bào),2011,34(11):2029-2051.
[2]曹婷,梁婧婕,呂璞鑫,等.移動(dòng)支付對大學(xué)生消費(fèi)的影響探析[J].中國商論,2016(14):95-96.
TP311.52
A
10.15913/j.cnki.kjycx.2019.17.043
2095-6835(2019)17-0095-02
梁子財(cái)(1993—),男,福建泉州人,在讀碩士,研究方向?yàn)樯a(chǎn)物流系統(tǒng)仿真優(yōu)化與數(shù)控軟件開發(fā)。
〔編輯:王霞〕