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