999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Qt 的Android 指揮信息終端軟件設(shè)計(jì)

2024-06-26 07:57:45汪清芳周飛虹
電腦知識與技術(shù) 2024年14期
關(guān)鍵詞:跨平臺

汪清芳 周飛虹

摘要:文章基于Qt on Android開發(fā)的設(shè)計(jì)思路,設(shè)計(jì)并實(shí)現(xiàn)了一款外貿(mào)指揮信息終端軟件,主要功能包含主框架、信令交互、系統(tǒng)設(shè)置、數(shù)據(jù)指揮、話音、多媒體等。軟件界面友好,操作簡單,功能多樣,解決了傳統(tǒng)指揮信息終端軟件功能有限、人機(jī)界面呆板、通信功能較弱、使用不便等問題。軟件主要采用C/C++編程語言進(jìn)行開發(fā),對于C/C++開發(fā)人員來說,減少了學(xué)習(xí)新的開發(fā)語言所耗費(fèi)的時(shí)間,極大地提高了開發(fā)效率。C/C++開發(fā)人員也可以高效地開發(fā)出Android應(yīng)用程序。

關(guān)鍵詞:Qt開發(fā)框架;Android應(yīng)用程序;跨平臺;信息終端;C/C++編程語言

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2024)14-0010-04 開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID) :

0 引言

信息終端是一種手持式設(shè)備,可用于移動地控制相關(guān)設(shè)施[1]。傳統(tǒng)的信息終端軟件大多基于WinCE等操作系統(tǒng)編譯運(yùn)行,軟件支持的功能和使用界面較為簡單,沒有良好的用戶體驗(yàn)感,難以滿足日益增長的用戶需求。近年來,Android操作系統(tǒng)崛起,并在智能設(shè)備的應(yīng)用開發(fā)中占據(jù)了一定的市場[2]。由于其開發(fā)成本低、操作方便、易于推廣等優(yōu)勢,備受開發(fā)者青睞[3-5]。因此,開發(fā)能夠運(yùn)行在Android操作系統(tǒng)上的指揮信息終端軟件勢在必行。

本文研究并設(shè)計(jì)了基于Qt的Android指揮信息終端軟件,在保證軟件基礎(chǔ)功能(如數(shù)據(jù)指揮、話音、多媒體等)穩(wěn)定的前提下,逐步優(yōu)化基礎(chǔ)功能,立志于打造一款基礎(chǔ)通用的指揮信息終端軟件。在此基礎(chǔ)上,根據(jù)項(xiàng)目需求增加功能定制,將來可以更好地服務(wù)于外貿(mào)項(xiàng)目中各種通信終端。

1 功能描述

指揮信息終端軟件功能主要由主框架、信令交互、多媒體、通信以及系統(tǒng)設(shè)置五大部分組成[6],軟件組成圖如圖1所示。

1.1 主框架

主框架功能主要由界面邏輯處理、數(shù)據(jù)庫、提示窗口等功能組成。

1) 界面邏輯處理:Android程序界面跳轉(zhuǎn)和桌面應(yīng)用程序跳轉(zhuǎn)不同,桌面應(yīng)用程序可以實(shí)現(xiàn)任意界面跳轉(zhuǎn),而Android程序跳轉(zhuǎn)邏輯只能返回至上一個功能界面。

2) 數(shù)據(jù)庫:使用SQLite作為軟件數(shù)據(jù)庫,并提供一套規(guī)范統(tǒng)一的操作接口,包含了增、刪、改、查和事務(wù)回滾等功能。SQLite是一款小型輕量級的開源嵌入式數(shù)據(jù)庫,占用資源低,處理速度快,具備體積小、性能高、可移植性強(qiáng)等特點(diǎn)[7]。

3) 提示窗口:提供默認(rèn)提示窗口和自定義提示窗口兩種風(fēng)格樣式的接口函數(shù),可在不同場景中使用。默認(rèn)窗口適合一些簡單文本性的提示語,自定義窗口適合多屬性、多元素信息提示。

1.2 信令交互

信令交互是指本軟件與底層服務(wù)的信令交互功能,主要包括話音信令交互和自組網(wǎng)信令交互,支撐保障了話音呼叫服務(wù)功能和自組網(wǎng)設(shè)置功能的正常使用。話音信令包含了單呼、組呼、接聽、掛斷等信令;自組網(wǎng)信令包含了自組網(wǎng)狀態(tài)查詢、自組網(wǎng)設(shè)置和設(shè)置應(yīng)答等信令。

1.3 多媒體

多媒體功能包含了拍照、錄像、相冊和視頻播放等功能。由于QtMultimedia::Camera類拍照無法很好對焦,導(dǎo)致拍攝效果不佳,以及其他一些如獲取視頻幀等問題,軟件最終采用Java原生方法,通過調(diào)用安卓系統(tǒng)功能函數(shù),完成拍照、錄像和視頻播放等多媒體功能,然后通過Qt提供的JNI函數(shù)調(diào)用Java接口,很好地避免了Qt原生方法拍照性能不足的問題。

1.4 通信功能

通信功能主要由話音呼叫、數(shù)據(jù)指揮、船艇值班和報(bào)文記錄等4個功能模塊組成。話音呼叫包含了選呼、組呼等功能模塊。數(shù)據(jù)指揮功能包含了航行請求、命令指示、請示報(bào)告和警示短語等8類通用短語。船艇值班功能完成了船艇甲板、輪機(jī)和電氣三類船體設(shè)施運(yùn)行情況每日登記上報(bào)功能。報(bào)文記錄功能提供了指揮短語的收發(fā)記錄功能,可查看指揮短語歷史發(fā)送和接收記錄。

1.5 系統(tǒng)設(shè)置

系統(tǒng)設(shè)置功能由基礎(chǔ)設(shè)置和自組網(wǎng)設(shè)置組成。基礎(chǔ)設(shè)置包含了通訊錄設(shè)置、亮度設(shè)置、本級身份設(shè)置、上級身份設(shè)置和定位授時(shí)等功能。自組網(wǎng)設(shè)置包含了網(wǎng)號、信道號、節(jié)點(diǎn)號和節(jié)點(diǎn)總數(shù)等設(shè)置功能。

2 關(guān)鍵技術(shù)研究

2.1 開發(fā)環(huán)境構(gòu)建

Qt 下配置Android 開發(fā)環(huán)境需要準(zhǔn)備好JavaJDK,Android SDK,Android NDK,Android ant,Androidadb,支持安卓的Qt 版本,如qt-opensource-windowsx86-android-5.9.2。注意:環(huán)境安裝時(shí)不能含有中文路徑。

1) 安裝Java JDK是編譯Android程序必要的Java 開發(fā)環(huán)境,需要配置系統(tǒng)環(huán)境變量:

變量名:JAVA_HOME

變量值:C:\Program Files\Java\JDK1.8.0_144

變量名:CLASSPATH

變量值:% JAVA_HOME% \lib;\% JAVA_HOME%\lib\tools.jar

2) Android SDK 安裝完畢后,把SDK 目錄下platform-tools文件夾路徑添加到系統(tǒng)環(huán)境變量后面:

變量名:PATH

變量值:C:\Program Files\Android\Android-SDK\platform-tools

3) Android NDK只需要安裝,無須配置環(huán)境變量。

4) Android ant1.10.1 解壓完畢后,將...\apacheant-1.10.1添加到系統(tǒng)環(huán)境變量中:

變量名:PATH

變量值:C: \Program Files\Android\ANT\apacheant-1.10.1\bin

5) Android adb(Android Debug Bridge 安卓調(diào)試橋):是Qt on Android開發(fā)時(shí)使用的調(diào)試工具,通過該工具可以直接操作管理Android模擬器或真實(shí)的An?droid設(shè)備(手機(jī)、平板等)。adb常用命令如下:

adb devices:查看當(dāng)前連接設(shè)備,列出顯示

adb root:重新啟動adb,并獲取管理權(quán)限

adb shell:進(jìn)入Android Shell命令環(huán)境中

adb disconnect <設(shè)備名>:斷開與指定設(shè)備的連接

adb install :將指定apk文件安裝到設(shè)備上

adb uninstall –k:卸載軟件,如果加-k保留配置和緩存文件

6) 打開Qt Creator,依次點(diǎn)擊菜單“工具-選項(xiàng)-設(shè)備-Android”配置JDK、SDK、NDK、Ant 的安裝路徑。點(diǎn)擊“Start AVD Manager”可創(chuàng)建AVD,方便之后的調(diào)試。

2.2 界面邏輯處理

在GUI開發(fā)時(shí),復(fù)雜的界面跳轉(zhuǎn)邏輯用程序?qū)崿F(xiàn)特別費(fèi)勁,本文給出的解決方案是利用Qt狀態(tài)機(jī)機(jī)制。Qt狀態(tài)機(jī)框架提供了一些類來創(chuàng)建執(zhí)行狀態(tài)圖,狀態(tài)圖為一個系統(tǒng)如何對外界激勵進(jìn)行反應(yīng)提供了一個圖形化模型,該模型是通過定義一些系統(tǒng)可能進(jìn)入的狀態(tài)以及系統(tǒng)怎樣從一個狀態(tài)切換到另一個狀態(tài)來實(shí)現(xiàn)的。用戶界面設(shè)計(jì)中采用狀態(tài)驅(qū)動,就可以根據(jù)當(dāng)前狀態(tài)的不同,顯示不同的界面。

1) 調(diào)用準(zhǔn)備:在pro文件中添加QT += SCML和包含頭文件include ,來提供對Qt 狀態(tài)機(jī)的支持。

2) 加載狀態(tài)機(jī)文件:

QScxmlStateMachin*m_achine=QScxml ?StateMachine:: fromFile(QStringLiteral“( : resource/views?tate.scxml”));

3) 跳轉(zhuǎn)目標(biāo)頁面和回退頁面狀態(tài)切換:

m_achine->submitEvent(QString strDestPagr);

m_achine->submitEvent“( goback”);

4) 狀態(tài)變化槽函數(shù):

void slotState()

{

QStringList S = m_achine->activeStateNames();

if(S.size()>0)

{

bool b = ui->stack->children.contains(p);

if(!b)

{

ui->stack->addWidget(p);

}

ui->stack->setCurrentWidget(p);

}}

2.3 SQLite 數(shù)據(jù)庫

在Qt下實(shí)現(xiàn)SQLite封裝調(diào)用,可以按照如下方法進(jìn)行操作。

1) 調(diào)用準(zhǔn)備:在pro文件中加入以下代碼,來提供對SQLite數(shù)據(jù)庫的支持,QT += sql。

2) 添加包含頭文件:

include

include

include

include

include

include

3) 創(chuàng)建并打開數(shù)據(jù)庫:

QSqlDatabase db = QSqlDatabase:: addDatabase“( QSQLITE”“, sqlite3”);

db. setDatabaseName“( /. database. db”);//數(shù) 據(jù) 庫路徑

db.open();

4) 建立數(shù)據(jù)庫連接:

QSqlDatabase db = QSqlDatabase:: data?base“( sqlite3”);

QSqlQuery query(db);

2.4 JNI 技術(shù)

關(guān)于Qt for Android程序如何完成對Android(Java 方法)的調(diào)用,從而實(shí)現(xiàn)多平臺的兼容主要是通過JNI 技術(shù)實(shí)現(xiàn)。解決方案是通過QAndroidJniEnvironment 類和QAndroidJniObject類,它們簡化了對Java方法的應(yīng)用。QAndroidJniEnvironment 類:實(shí)現(xiàn)JNI 的環(huán)境,用于異常的檢查和清除等功能;QAndroidJniObject類用于調(diào)用Java方法。

1) 調(diào)用準(zhǔn)備:在pro 文件中添加代碼QT += an?droidextras,來提供對Android庫的支持;

2) 調(diào)用方法:方法簽名格式為(參數(shù)類型)返回類型。調(diào)用靜態(tài)方法格式:QAndroidJniObject 對象名;對象名(方法名,方法簽名,方法參數(shù)列表),如果沒有參數(shù),則方法簽名和方法參數(shù)列表可以省略,程序會自動提供正確的簽名。

2.5 多媒體實(shí)現(xiàn)

綜合考慮開發(fā)效率以及本軟件對于多媒體功能沒有特殊需求,系統(tǒng)相機(jī)相對而言封裝成熟、調(diào)用簡單,拍照和錄像清晰等因素,本文最終選擇Android提供的系統(tǒng)相機(jī)API實(shí)現(xiàn)多媒體功能。下面展示一些實(shí)現(xiàn)拍照和錄像功能需要配置的權(quán)限和核心代碼。

1) 添加必需的權(quán)限:

2) 調(diào)用相機(jī)拍照核心代碼:

Uri fileUri = Uri.fromFile(getOutputMediaFile());

Intent int = new Intent(MediaStore. ACTION_IMAGE_CAPTURE);

int.putExtra(MediaStore.EXTRA_OUTPUT,fileUri);

startActivityForResult(int. RECORD_SYSTEM_CAPTURE);

3) 調(diào)用相機(jī)視頻錄制核心代碼:

Uri fileUri = Uri.fromFile(getOutputMediaFile());

Intent int = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

int.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

int. putExtra(MediaStore. EXTRA_VIDEO_QUALITY,1);

int. putExtra(MediaStore. EXTRA_DURATION_LIMIT,10);

startActivityForResult(int, RECORD_SYSTEM_VIDEO);

3 軟件優(yōu)勢和效果展示

3.1 軟件優(yōu)勢

本軟件優(yōu)勢主要體現(xiàn)在兩個方面:一是軟件界面展現(xiàn);二是軟件開發(fā)效率。

1) 軟件界面展現(xiàn):相比傳統(tǒng)指揮終端軟件,本軟件界面功能更為豐富,界面顯示效果大多采用圖像化界面,顯示效果更為簡潔直觀,操作也較為便利。

2) 軟件開發(fā)效率:本軟件開發(fā)語言主要是用C++ 代碼編寫實(shí)現(xiàn)的。由于Android原生開發(fā)具有學(xué)習(xí)難度大、移植性差等不足,在Android開發(fā)人員緊缺的實(shí)際情況下,C++軟件設(shè)計(jì)人員可以使用Qt開發(fā)Android 程序,減少了學(xué)習(xí)Android原生語言耗費(fèi)的時(shí)間,極大地提高了開發(fā)效率,有效地規(guī)避了項(xiàng)目的進(jìn)度風(fēng)險(xiǎn)。此外,使用Qt開發(fā)的應(yīng)用程序,源碼支持跨平臺,可移植性高,后續(xù)可根據(jù)項(xiàng)目使用需求移植到其他項(xiàng)目中投入使用,避免了從零開始開發(fā)所增加的工作量。

3.2 效果展示

程序安裝運(yùn)行在通導(dǎo)指揮信息終端的效果圖如圖2所示。

指揮信息終端軟件主界面效果圖如圖3所示。

數(shù)據(jù)指揮功能短語種類界面效果圖如圖4所示。

4 結(jié)論

本文以Windows 環(huán)境下采用基于Qt C/C++框架開發(fā)Android應(yīng)用程序的設(shè)計(jì)思路[8-9],設(shè)計(jì)實(shí)現(xiàn)了“基于Qt的Android指揮信息終端軟件”。軟件通過了嚴(yán)格的測試實(shí)驗(yàn),從實(shí)驗(yàn)的效果看,該軟件工作性能良好,運(yùn)行穩(wěn)定[10],目前軟件已正式投入生產(chǎn)并交付外方使用。

在未來的工作中,將會從兩方面進(jìn)行改進(jìn):一是將繼續(xù)尋找Qt On Android加載地圖相關(guān)技術(shù)途徑與手段,有望能夠?qū)⒌貓D相關(guān)的功能和操作集成至指揮通信終端;二是將繼續(xù)對基礎(chǔ)業(yè)務(wù)邏輯和人機(jī)交互方面的部分功能進(jìn)行優(yōu)化,使其更貼近軟件實(shí)際應(yīng)用場景和符合日常操作習(xí)慣。

參考文獻(xiàn):

[1] 劉劍波.突發(fā)公共衛(wèi)生事件應(yīng)急指揮系統(tǒng)嵌入式手持信息終端[D].成都:四川大學(xué),2006.

[2] 廖列法,張幸平.基于Android的智能可視化指揮系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2022,43(9):2694-2701.

[3] 劉偉,李杰,楊雁宇.基于Android的便攜式角度測量儀設(shè)計(jì)[J].電子器件,2017,40(4):1044-1048.

[4] 何東華.基于安卓的糧庫信息查詢系統(tǒng)[J].糧食儲藏,2013,42(2):47-50.

[5] 李亞東,馮仲科,曹明蘭,等.Android智能手機(jī)樹高測量APP開發(fā)與試驗(yàn)[J].中南林業(yè)科技大學(xué)學(xué)報(bào),2016,36(10):78-82.

[6] 曾浩煒,張駿驍,朱慶.基于北斗的應(yīng)急測繪指揮終端設(shè)計(jì)和實(shí)現(xiàn)[J].地理信息世界,2016,23(4):81-83,89.

[7] 楊林楠,郜魯濤,林爾升,等.基于Android系統(tǒng)手機(jī)的甜玉米病蟲害智能診斷系統(tǒng)[J]. 農(nóng)業(yè)工程學(xué)報(bào),2012,28(18):163-168.

[8] 朱春華,張宜志.糧食儲備與決策系統(tǒng)的移動終端APP開發(fā)模型研究[J].食品工業(yè),2017,38(4):254-256.

[9] 閆鋒欣,牛子杰,杜爍煒,等.基于Qt的Android應(yīng)用程序C/C++開發(fā)方法與實(shí)踐[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2018,27(7):96-102.

[10] 喻曉,夏澎.基于Qt的便攜式心電監(jiān)護(hù)儀GUI應(yīng)用軟件設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(5):221-226.

【通聯(lián)編輯:謝媛媛】

基金項(xiàng)目:江西省高等學(xué)校教學(xué)改革研究課題(編號:JXJG-23-24-3)

猜你喜歡
跨平臺
跨層級網(wǎng)絡(luò)、跨架構(gòu)、跨平臺的數(shù)據(jù)共享交換關(guān)鍵技術(shù)研究與系統(tǒng)建設(shè)
一款游戲怎么掙到全平臺的錢?
潛力雙跨平臺:進(jìn)階:誰將跨入下一個“十大”?
跨平臺APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
基于C++語言的跨平臺軟件開發(fā)的設(shè)計(jì)
基于C++語言的跨平臺軟件開發(fā)
移動互聯(lián)網(wǎng)應(yīng)用跨平臺開發(fā)
一種虛擬現(xiàn)實(shí)應(yīng)用程序跨平臺方法的研究
基于QT的跨平臺輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
基于OPC跨平臺通信的電機(jī)監(jiān)測與診斷系統(tǒng)
主站蜘蛛池模板: 伊人网址在线| 亚洲欧美人成人让影院| 欧美h在线观看| 国产成人精品亚洲77美色| 麻豆国产精品视频| 欧美亚洲国产日韩电影在线| а∨天堂一区中文字幕| 人人艹人人爽| 欧美成人二区| 欧美一级夜夜爽| 国产在线91在线电影| 久久久久亚洲av成人网人人软件| 亚洲性影院| 日韩大乳视频中文字幕| 色亚洲成人| 国产一级做美女做受视频| 毛片免费在线| 国产精品妖精视频| 精品小视频在线观看| 一级全黄毛片| 国产高潮流白浆视频| 国产成人三级| 18禁黄无遮挡免费动漫网站| 天天躁夜夜躁狠狠躁图片| 欧美亚洲激情| 亚洲av无码人妻| 日韩精品一区二区深田咏美| 国产亚洲高清在线精品99| 狼友视频一区二区三区| 国模视频一区二区| 中文字幕日韩视频欧美一区| 国产高清不卡视频| 亚洲二三区| 美女视频黄又黄又免费高清| 重口调教一区二区视频| 亚洲中文无码h在线观看 | 亚洲AV无码不卡无码| 日韩av无码精品专区| 熟妇丰满人妻| 欧美日韩91| 看国产毛片| 免费99精品国产自在现线| 强奷白丝美女在线观看| 国产 日韩 欧美 第二页| 先锋资源久久| 三上悠亚一区二区| 国产精品免费p区| 在线网站18禁| 欧美成人精品一区二区| 亚洲日韩精品伊甸| 国产欧美视频在线观看| 亚洲伊人久久精品影院| 五月激情综合网| 97se亚洲综合在线| 一本久道久综合久久鬼色| 久久99这里精品8国产| 精品久久国产综合精麻豆| 一本大道东京热无码av| 欧美国产日韩在线观看| 91年精品国产福利线观看久久| 青青操视频在线| 尤物在线观看乱码| 久久久黄色片| 色成人综合| 欧美日韩国产精品va| 久久免费精品琪琪| 中文字幕永久在线看| 日本久久网站| 亚洲精品高清视频| 国产福利微拍精品一区二区| 日本三区视频| 国产在线自在拍91精品黑人| 国产丝袜精品| 2022精品国偷自产免费观看| 亚洲香蕉在线| 国产麻豆va精品视频| 国产精品va免费视频| 九色视频线上播放| 国产精品福利尤物youwu | 无码精品国产dvd在线观看9久| 欧美色综合网站| 亚洲AV人人澡人人双人|