- 相關(guān)推薦
安卓設(shè)備管理論文
近幾年來(lái),隨著移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來(lái),Android操作系統(tǒng)已經(jīng)從最初的智能手機(jī)領(lǐng)域逐漸進(jìn)入教育、醫(yī)療、軍事、汽車、家居等重要領(lǐng)域,并已經(jīng)成為移動(dòng)平臺(tái)領(lǐng)域當(dāng)之無(wú)愧的王者。
【1】基于安卓車載終端平臺(tái)的設(shè)備管理框架構(gòu)建
摘要
2011 年1月至3月,Android占領(lǐng)了全球大部分的手機(jī)市場(chǎng),市場(chǎng)份額首次超過(guò)了塞班系統(tǒng)上升到全球第一[1];
2012 年第一季度數(shù)據(jù)顯示,Android占領(lǐng)了中國(guó)68.4%的智能手機(jī)操作系統(tǒng)市場(chǎng),在全球市場(chǎng)占有率為52.5%[2].
Android在 國(guó)內(nèi)的發(fā)展不僅僅局限于作為智能手機(jī)操作系統(tǒng),現(xiàn)在已經(jīng)開(kāi)始向作為其他移動(dòng)終端操作系統(tǒng)的方向發(fā)展,例如移動(dòng)互聯(lián)網(wǎng)設(shè)備、數(shù)字機(jī)頂盒、車載移動(dòng)終端等領(lǐng)域。
Android平 臺(tái)是一個(gè)標(biāo)準(zhǔn)的通用平臺(tái),而在多媒體車載終端項(xiàng)目中增加了許多Android原生系統(tǒng)中沒(méi)有的設(shè)備,例如DVD、GPIO、音頻管理設(shè)備等。
針對(duì)這些設(shè)備的控制,在Android原 生 系 統(tǒng) 中 最 常 用 的 做 法 就 是 使 用JNI方 式 進(jìn) 行控 制。
JNI是Java Native Interface的縮寫,即“Java本地接口”.在Android系統(tǒng)代碼層次結(jié)構(gòu)中,JNI處于Java代碼層與C/C++本地代碼層之間的位置。
在Android系統(tǒng)中提供JNI機(jī)制,使得在Java虛擬機(jī)內(nèi)部運(yùn)行的Java代碼能夠調(diào)用C/C++本地層的應(yīng)用程序和庫(kù),從而將Java代碼和C/C++本地層代碼緊密聯(lián)系在一起[3].但 是,在Android車 載終端平臺(tái)上使用常規(guī)JNI方式進(jìn)行設(shè)備管理的缺點(diǎn)在于:
使 用JNI方 式 進(jìn) 行 應(yīng) 用 程 序 開(kāi) 發(fā) 需 要 同 時(shí) 實(shí) 現(xiàn)Java、JNI、C/C++ 3個(gè)層次的代碼,開(kāi)發(fā)工作量大,開(kāi)發(fā)難度也較大;應(yīng)用程序如果要移植到其它平臺(tái)上,C/C++本地層代碼需要重新編寫,移植的工作量較大;
從邏輯結(jié)構(gòu)方面考慮,一個(gè)JNI動(dòng) 態(tài)庫(kù)一般只適合管理一個(gè)外圍設(shè)備,隨著外圍設(shè)備的不斷增加,難以對(duì)這些設(shè)備進(jìn)行統(tǒng)一管理;而且系統(tǒng)使用過(guò)程中存在多個(gè)應(yīng)用程序同時(shí)訪問(wèn)一個(gè)設(shè)備的可能,易造成設(shè)備訪問(wèn)不可控,系統(tǒng)穩(wěn)定性差。
此外,Java虛擬機(jī)為Java代碼提供了完善的安全機(jī)制使得Java代碼不會(huì)導(dǎo)致程序崩潰、濫用數(shù)據(jù)等,而一旦使用了JNI機(jī)制,這種安全機(jī)制就無(wú)能為力了[4].
可見(jiàn),在包含較多非Android原始設(shè)備的Android車載終端平臺(tái)上,對(duì)這些設(shè)備進(jìn)行統(tǒng)一管理變得非常重要。
為了實(shí)現(xiàn) 對(duì) 這 些 設(shè) 備 的 統(tǒng) 一 管 理,本 文 提 出 并 設(shè) 計(jì) 了 一 種 基 于Android Local Socket 和 Service 的方式,實(shí)現(xiàn)專門針對(duì) Android車載終端平臺(tái)的設(shè)備管理框架。
該框架能夠?qū)崿F(xiàn)對(duì)系統(tǒng)中非Android 原生的眾多設(shè)備進(jìn)行統(tǒng)一控制和管理。
1 設(shè)備管理框架的邏輯結(jié)構(gòu)圖
基于 Android 車 載終 端 平 臺(tái) 的 設(shè) 備 管 理 框 架 的 邏 輯 結(jié)構(gòu),如圖 1 所示。
設(shè)備管理框架的邏輯結(jié)構(gòu)圖
設(shè)備管理框架包括下述層次:應(yīng)用程序、設(shè)備管理服務(wù)、守護(hù)進(jìn)程、設(shè)備功能動(dòng)態(tài)庫(kù)、內(nèi)核設(shè)備驅(qū)動(dòng),以及設(shè)備硬件。
2 設(shè)備管理框架的實(shí)現(xiàn)原理
按照從上到下的調(diào)用層次關(guān)系,整個(gè)設(shè)備管理框架的設(shè)計(jì)實(shí)現(xiàn)原理如下。
2.1 應(yīng) 用程序?qū)?/p>
系統(tǒng)中對(duì)設(shè)備管理框架的調(diào)用操作均由應(yīng)用程序發(fā)起。
Android 應(yīng) 用程序通過(guò)服務(wù)綁定接口綁定設(shè)備管理服務(wù),綁定之后應(yīng)用程序可獲得設(shè)備管理服務(wù)中的 DVD、GPIO、音頻管 理 等 所 有 設(shè) 備 的 AIDL(Android Interface DefinitionLanguage, 即 Android 接 口描述語(yǔ)言)接口。
這些接口就是DVD、GPIO、 音 頻 管 理 等 所 有 設(shè) 備,通 過(guò) 設(shè) 備 管 理 服 務(wù) 的AIDL 接 口提供給應(yīng)用程序調(diào)用的功能接口。
2.2 設(shè)備管理服務(wù)層
設(shè)備管理服務(wù)位于 Android 系統(tǒng)中的 Java 框架層,介于Android 應(yīng) 用 程 序 和 設(shè) 備 管 理 守 護(hù) 進(jìn) 程 之 間,并 通 過(guò) 提 供AIDL 接 口為應(yīng)用程序提供接口調(diào)用。
設(shè)備管理服務(wù)向上層應(yīng)用程序提供 AIDL 調(diào)用接口,與下層的設(shè)備管理守護(hù)進(jìn)程通過(guò) Socket 通信方式進(jìn)行數(shù)據(jù)通信,作用至關(guān)重要。
通過(guò)對(duì)整個(gè)設(shè)備管理框架的功能劃分,設(shè)備管理服務(wù)需要實(shí)現(xiàn)如下功能:
1)設(shè) 備管理服務(wù)感知應(yīng)用程序的調(diào)用操作,并將應(yīng)用程序 的 調(diào) 用 轉(zhuǎn) 化 為 命 令 格 式,并 將 這 個(gè) 命 令 通 過(guò) AndroidLocal Socket(本 質(zhì)上即為 Socket 套 接字)通信傳送給設(shè)備管理守護(hù)進(jìn)程進(jìn)行處理。
2)建 立和維護(hù)與設(shè)備管理守護(hù)進(jìn)程之間的數(shù)據(jù)通信,確定一套合理規(guī)范的通信協(xié)議。
由于傳輸命令的內(nèi)容較為簡(jiǎn)單,設(shè)備管理服務(wù)向設(shè)備管理守護(hù)進(jìn)程傳輸?shù)拿罡袷蕉x為:“Device Name @ Function # parameter1 # parameter2 # …#parameter N”,其中“Device Name” 表 示設(shè)備名稱,“Function” 表示 功 能 接 口 名 稱,“parameter1#parameter2#…#parameter N”則表 示 傳 遞 的 參 數(shù),參 數(shù) 之 間 使 用 符 號(hào) '#' 分 隔。
以 命 令“GPIO@GPIO_UP#fmpowon” 為 例,其 中“GPIO” 表 示 設(shè) 備 名稱,“GPIO_UP”表示功能接口名稱,“fmpowon”表示功能接口的參數(shù)。
3) 為 DVD、GPIO、 音 頻 管 理等 每 個(gè) 設(shè)備 各 創(chuàng) 建(即 手 動(dòng)編輯生成)一個(gè) AIDL 接口文件,以供應(yīng)用程序調(diào)用。
這里的AIDL 文 件只是接口聲明,需要在設(shè)備管理服務(wù)的其它 Java文件中完成這些 AIDL 接口的代碼實(shí)現(xiàn),實(shí)現(xiàn)的主要內(nèi)容是生成命令格式并向守護(hù)進(jìn)程發(fā)送該命令。
由于設(shè)備管理服務(wù)對(duì)應(yīng)用程序提供了設(shè)備管理框架內(nèi)管理的所有設(shè)備的功能接口,設(shè)備管理服務(wù)的主要功能之一就是生成命令格式,命令格式中的“Device Name”字段即包含了要調(diào)用的外圍設(shè)備模塊,設(shè)備管理服務(wù)通過(guò)這個(gè)字段就可以將 AIDL 接口與外圍設(shè)備聯(lián)系起來(lái)。
4) 能 穩(wěn)定地為 Android 應(yīng) 用程序提供服務(wù),數(shù)據(jù)處理及時(shí),協(xié)調(diào)應(yīng)用程序之間的執(zhí)行和數(shù)據(jù)同步。
2.3 設(shè) 備管理守護(hù)進(jìn)程層
設(shè)備管理守護(hù)進(jìn)程位于 Android 系統(tǒng)中的 HAL 層(即硬件抽象層),介于設(shè)備管理服務(wù)和設(shè)備功能動(dòng)態(tài)庫(kù)之間,通過(guò)Android Local Socket 與上層的設(shè)備管理服務(wù) 進(jìn) 行數(shù) 據(jù) 通 信,向下層則調(diào)用相應(yīng)設(shè)備功能動(dòng)態(tài)庫(kù)提供的接口,起著信息樞紐的作用。
通過(guò)對(duì)整個(gè)設(shè)備管理框架的功能劃分,設(shè)備管理守護(hù)進(jìn)程需要實(shí)現(xiàn)如下功能:
1)通過(guò) Local Socket 與上層的設(shè)備管理服務(wù)層進(jìn)行Socket數(shù)據(jù)通信,通過(guò)發(fā)送心跳包檢測(cè)鏈路機(jī)制監(jiān)測(cè)和更新上層客戶端的連接情況,準(zhǔn)確接收設(shè)備管理服務(wù)層發(fā)送的命令包并解析命令格式。
2)根 據(jù)設(shè)備管理服務(wù)中規(guī)定的命令格式,從接收到的命令中解析得到調(diào)用的目標(biāo)設(shè)備名稱,這里假設(shè)是“GPIO”設(shè)備,如果是第一次調(diào)用該設(shè)備,則首先加載該設(shè)備的功能動(dòng)態(tài)庫(kù),然后調(diào)用設(shè)備功能動(dòng)態(tài)庫(kù)中的初始化接口 XXX_init(其 中“XXX” 是 從 命 令 中 解 析 得 到 的 設(shè) 備 名 稱),
例 如GPIO_init,進(jìn) 行初始化工作,否則直接調(diào)用該設(shè)備功能動(dòng)態(tài)庫(kù) 的 命 令 處 理 接 口 XXX_process Cmd,例 如 GPIO_processCmd,進(jìn) 行處理。
3)由 于有些功能接口存在獲取響應(yīng)數(shù)據(jù)的需求,這要求設(shè)備管理守護(hù)進(jìn)程能夠接收來(lái)自設(shè)備功能動(dòng)態(tài)庫(kù)的響應(yīng)數(shù)據(jù)并向設(shè)備管理服務(wù)層進(jìn)行傳遞,傳遞的數(shù)據(jù)封裝格式定義為:設(shè) 備 名 稱 +'@' + 功 能 接 口 名 稱 +'#' + 有 效 數(shù) 據(jù)。
以“AUDIO@Get Main Volume#80” 為 例, “AUDIO” 表 示 音 頻 管 理設(shè)備名稱,“Get Main Volume”表示功能接口名稱,即獲取系統(tǒng)主音量,“80”表示有效數(shù)據(jù),即音量值。
4) 能穩(wěn)定地為設(shè)備管理服務(wù)層提供 Socket 連接的服務(wù)端,數(shù)據(jù)處理及時(shí)、可靠。
2.4 設(shè)備功能動(dòng)態(tài)庫(kù)層
在 Linux 系統(tǒng)中,Linux 內(nèi)核提供了用戶空間與內(nèi)核空間進(jìn)行交互的一組接口,即系統(tǒng)調(diào)用。
這些系統(tǒng)調(diào)用接口允許應(yīng)用程序受限地訪問(wèn)硬件設(shè)備。
系統(tǒng)調(diào)用是應(yīng)用程序訪問(wèn)內(nèi)核空間的唯一手段;除了異常和陷入以外,它們是訪問(wèn)內(nèi)核唯一的合法入口[5].
設(shè)備管理框架中采用設(shè)備功能動(dòng)態(tài)庫(kù)和設(shè)備管理守護(hù)進(jìn)程分離的設(shè)計(jì)思想。
設(shè)備功能動(dòng)態(tài)庫(kù)主要封裝與內(nèi)核設(shè)備驅(qū)動(dòng)進(jìn)行交互的接口,應(yīng)用程序向硬件模塊傳遞的命令也將到達(dá)設(shè)備功能動(dòng)態(tài)庫(kù)。
即設(shè)備功能動(dòng)態(tài)庫(kù)向上層提供接口給設(shè)備管理守護(hù)進(jìn)程調(diào)用,通過(guò) Linux 系統(tǒng)調(diào)用向下層調(diào)用內(nèi)核設(shè)備驅(qū)動(dòng)。
設(shè)備功能動(dòng)態(tài)庫(kù)層向下層調(diào)用內(nèi)核設(shè)備驅(qū)動(dòng)的基本過(guò)程如下:
1)在 設(shè)備命令處理函數(shù)(即 XXX_process Cmd,其 中 XXX代表設(shè)備名稱)實(shí)現(xiàn)中,獲取守護(hù)進(jìn)程傳遞下來(lái)的功能接口名稱和參數(shù);
2) 根 據(jù)功能接口名稱查找設(shè)備動(dòng)態(tài)庫(kù)中的功能接口名稱與功能接口函數(shù)指針映射表;
3) 根 據(jù)查找到的功能接口函數(shù)指針調(diào)用對(duì)應(yīng)的功能接口函數(shù);
4)在 功能接口函數(shù)實(shí)現(xiàn)中,調(diào)用 Linux 操 作系統(tǒng)提供的系統(tǒng)調(diào)用接口,實(shí)現(xiàn)對(duì)內(nèi)核設(shè)備驅(qū)動(dòng)的調(diào)用。
同時(shí),接收內(nèi)核設(shè)備驅(qū)動(dòng)返回的數(shù)據(jù),并將數(shù)據(jù)返回給守護(hù)進(jìn)程。
數(shù)據(jù)上報(bào)給守護(hù)進(jìn)程的格式定義為:“功能接口名稱+'#'+有效數(shù)據(jù)”.
2.5 內(nèi) 核設(shè)備驅(qū)動(dòng)層
內(nèi)核設(shè)備驅(qū)動(dòng)直接與底層硬件打交道,并按照硬件設(shè)備的具體工作方式,驅(qū)動(dòng)硬件設(shè)備進(jìn)行工作。
內(nèi)核設(shè)備驅(qū)動(dòng)作為應(yīng)用空間和硬件之間的紐帶,使得應(yīng)用空間只需通過(guò)調(diào)用系統(tǒng)調(diào)用接口就可以讓硬件完成要求的工作[6].
Linux 內(nèi) 核通過(guò)系統(tǒng)調(diào)用接口,如 open、read、write、ioctl、close 等接口,與上層的設(shè)備功能動(dòng)態(tài)庫(kù)進(jìn)行通信[7],并通過(guò)設(shè)備驅(qū)動(dòng)代碼操作下層的設(shè)備硬件,完成硬件操作功能。
2.6 設(shè) 備硬件層
設(shè)備硬件接收來(lái)自內(nèi)核設(shè)備驅(qū)動(dòng)的操作命令[8],執(zhí)行硬件功能實(shí)現(xiàn),并在必要時(shí)返回響應(yīng)數(shù)據(jù)給應(yīng)用程序。
3 設(shè)備管理框架的基本操作流程
設(shè)備管理框架的基本操作流程為:
1)Android 應(yīng)用程序通過(guò)綁定服務(wù)接口綁定設(shè)備管理服務(wù),綁定之后,通過(guò)設(shè)備管理服務(wù)的 AIDL 接口文件,即可獲得設(shè)備管理服務(wù)中 DVD、GPIO、音頻管理等所有設(shè)備提供的功能接口。
2)應(yīng) 用程序調(diào)用設(shè)備管理服務(wù) AIDL 接 口文件中提供的功能接口。
3)設(shè) 備管理服務(wù)感知應(yīng)用程序的調(diào)用操作,將應(yīng)用程序的 調(diào) 用 轉(zhuǎn) 化 為 命 令 格 式[9],并 將 該 命 令 通 過(guò) Android LocalSocket 方 式發(fā)送給設(shè)備管理守護(hù)進(jìn)程。
4)設(shè)備管理守護(hù)進(jìn)程接收到調(diào)用命令,根據(jù)已定義的命令格式,對(duì)接收到的命令進(jìn)行解析,得到調(diào)用的設(shè)備名稱。
如果是第一次調(diào)用該設(shè)備[10],則首先加載該設(shè)備的功能動(dòng)態(tài)庫(kù),并調(diào)用動(dòng)態(tài)庫(kù)中的初始化接口 XXX_init 進(jìn)行初始化工作,否則 直 接 調(diào) 用 該 設(shè) 備 功 能 動(dòng) 態(tài) 庫(kù) 的 命 令 處 理 接 口XXX_process Cmd 進(jìn) 行命令處理。
5)設(shè)備功能動(dòng)態(tài)庫(kù)接收守護(hù)進(jìn)程傳遞下來(lái)的功能接口名稱和參數(shù),并通過(guò) Linux 操作系統(tǒng)提供的系統(tǒng)調(diào)用接口調(diào)用設(shè)備內(nèi)核驅(qū)動(dòng)。
6)設(shè)備內(nèi)核驅(qū)動(dòng)通過(guò)操作設(shè)備硬件寄存器等方式實(shí)現(xiàn)向下層調(diào)用硬件操作功能。
7)設(shè)備硬件接收內(nèi)核設(shè)備驅(qū)動(dòng)的硬件操作命令,執(zhí)行硬件功能實(shí)現(xiàn)并在必要時(shí)返回響應(yīng)數(shù)據(jù)。
4 結(jié) 論
根據(jù) Android 車載終端設(shè)備的特點(diǎn),本文提出了設(shè)備管理框架的概念,設(shè)計(jì)并實(shí)現(xiàn)了專門針對(duì) Android 車載終端的設(shè)備管理框架,將系統(tǒng)中非 Android 原生的設(shè)備進(jìn)行統(tǒng)一控制和管理。
通過(guò)設(shè)計(jì)、實(shí)現(xiàn)及使用該設(shè)備管理框架,為應(yīng)用程序開(kāi)發(fā)提供了統(tǒng)一的接口,降低了應(yīng)用程序開(kāi)發(fā)的難度,提高了應(yīng)用程序的代碼復(fù)用和可移植性;通過(guò)對(duì)設(shè)備的統(tǒng)一控制和管理,避免了多個(gè)應(yīng)用同時(shí)對(duì)同一硬件進(jìn)行操作存在的安全等隱患,有效地提高了系統(tǒng)的安全性。
設(shè)備管理框架采用標(biāo)準(zhǔn)而又靈活的體系結(jié)構(gòu)設(shè)計(jì),非常易于后續(xù)擴(kuò)展,同時(shí)易于在 Android 平臺(tái)的不同項(xiàng)目之間推廣和復(fù)用,給設(shè)備系統(tǒng)帶來(lái)了多方面的顯著有益效果,達(dá)到了設(shè)計(jì)要求。
參考文獻(xiàn):
[1]宋 滟泓。
Android獨(dú) 大引二次開(kāi)發(fā)潮中國(guó)廠商少積累難有作為[J]. IT時(shí)代周刊, 2012(6): 51-52.
[2] 百 度 百 科 . Android [EB/OL]. [2015 -01 -25].
[3] 韓 超,梁泉 . Android 系 統(tǒng)原理及開(kāi)發(fā)要點(diǎn)詳解 [M]. 北 京 :電子工業(yè)出版社,2010.
[4] 阿 耀 . JNI:使 用 Java 調(diào) 用 本 地 C 代 碼 [EB/OL].(2011-09-16) [2015 -01 -25].
[5] ( 美)拉 芙(Love,R) 著;陳 莉君,康華譯 . Linux 內(nèi) 核 設(shè)計(jì)與實(shí)現(xiàn)[M]. 3版。
北京: 機(jī)械工業(yè)出版社,2011.
[6] 宋 寶華。
Linux設(shè) 備驅(qū)動(dòng)開(kāi)發(fā)詳解 [M]. 2版 .北 京 : 人 民郵電出版社,2010.
[7] 李 先妹。
數(shù) 字化變電站網(wǎng)絡(luò)通信技術(shù)的研究[J]. 陜 西電力,2011(6):37-40.
[8] 徐 進(jìn),徐榮森,梅正茂。
基 于1394b總 線仿真設(shè)備的WDM驅(qū)動(dòng)開(kāi)發(fā)[J]. 電子設(shè)計(jì)工程,2015(2):63-66.
[9] 李剛。
基于SOA的Web GIS系統(tǒng)框架設(shè)計(jì)分析[J]. 陜西電力,2011(2):38-41.
[10]張 銀勇,吳劍,李向黨 . 某 推進(jìn)系統(tǒng)氣路啟動(dòng)特性研究 [J].火箭推進(jìn),2012(6):20-23,51.
【2】學(xué)校設(shè)備管理系統(tǒng)Android客戶端功能的開(kāi)發(fā)
摘要
隨著高校信息化建設(shè)速度的深入發(fā)展,高校所使用的設(shè)備越來(lái)越多,種類也越來(lái)越復(fù)雜,而原有管理方式無(wú)法適應(yīng)現(xiàn)代化管理的需要,出現(xiàn)了許多不足,從而對(duì)高校設(shè)備的管理成為重要研究問(wèn)題。
因經(jīng),擁有一個(gè)功能完備、操作便捷的設(shè)備管理系統(tǒng),是眾多高校設(shè)備管理的首選。
根據(jù)設(shè)備管理系統(tǒng)的需求,我們對(duì)設(shè)備管理信息系統(tǒng)進(jìn)行了詳細(xì)的設(shè)計(jì),包括Web端和Android客戶端。
Web端主要分為六大模塊,包括設(shè)備管理、記錄管理、報(bào)表統(tǒng)計(jì)管理、庫(kù)存管理、權(quán)限管理和系統(tǒng)管理功能模塊;Android客戶端分為查看用戶信息、查看領(lǐng)用記錄、掃描檢索設(shè)備、搜索設(shè)備等模塊。
該系統(tǒng)不僅能夠使設(shè)備管理者對(duì)設(shè)備信息的錄入、審核、查詢和統(tǒng)計(jì)等功能快速方便的操作。
對(duì)于設(shè)備使用者來(lái)說(shuō),也可登錄移動(dòng)終端,搜索相關(guān)設(shè)備、查看領(lǐng)用設(shè)備詳情等操作,給用戶帶來(lái)了很大的便捷。
本文側(cè)重基于Android平臺(tái)[1]的客戶端功能的設(shè)計(jì)與實(shí)現(xiàn),基于eclipse的開(kāi)發(fā)環(huán)境,采用JAVA語(yǔ)言,使軟件具有良好平臺(tái)移植性和可擴(kuò)展性,該APP軟件使得設(shè)備管理系統(tǒng)的功能更加完善,提高用戶操作的方便性。
1 Android客戶端功能需求分析
在設(shè)備管理信息系統(tǒng)中引入Android客戶端,主要為了方便用戶的操作,用戶無(wú)須使用電腦在web端登錄,就可完成相關(guān)的操作。
比如檢索設(shè)備處是否存在某個(gè)設(shè)備,以便于領(lǐng)用申請(qǐng),查詢自己的借用設(shè)備記錄等。
Android客戶端具體的功能需求結(jié)構(gòu)圖如圖1所示。
Android客戶端功能結(jié)構(gòu)圖
1)查看用戶信息:用戶使用工號(hào)從客戶端成功登錄后,即可查看自己的信息。
2)掃描檢索設(shè)備信息:用戶成功登錄后,通過(guò)掃一掃功能掃描相應(yīng)二維碼、條形碼到設(shè)備庫(kù)檢索設(shè)備,若存在該設(shè)備將獲取設(shè)備信息,并顯示給用戶。
3)查看領(lǐng)用記錄:用戶成功登錄后,可以方便查看以往領(lǐng)用的設(shè)備記錄,無(wú)須登錄web端系統(tǒng)進(jìn)行查看。
4)搜索設(shè)備:用戶成功登錄后,通過(guò)搜一搜功能,并輸入相應(yīng)關(guān)鍵詞進(jìn)行檢索,若存在相關(guān)設(shè)備,將獲取設(shè)備相應(yīng)的數(shù)據(jù)顯示給用戶。
2 Android客戶端功能的設(shè)計(jì)與實(shí)現(xiàn)
2.1 Android客戶端登錄模塊設(shè)計(jì)與實(shí)現(xiàn)
這種登錄方式,需要用戶輸入用戶名(教師工號(hào))和密碼進(jìn)行登錄,基于Android平臺(tái)進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)。
登錄模塊在進(jìn)行設(shè)計(jì)時(shí),頁(yè)面布局需要用xml格式編寫,該xml聲明一個(gè)垂直的線性布局,布局中包括了兩個(gè)子線性布局,其中第一個(gè)線性布局包含一個(gè)Image View,用來(lái)設(shè)置登錄界面logo;第二個(gè)線性布局通過(guò)包含兩個(gè)EdiTextText(接收用戶賬號(hào)和密碼的輸入)、一個(gè)登錄Button控件以及兩個(gè)Text View,它們分別作用于設(shè)置用戶忘記密碼連接和App版權(quán)信息。
其中各個(gè)控件的樣式通過(guò)Android的背景選擇器selector[2]來(lái)定義,并在控件的background屬性進(jìn)行設(shè)置。
實(shí)現(xiàn)登錄功能需要用到Login Activity和Loading Activity,打開(kāi)客戶端首先會(huì)啟動(dòng)一個(gè)歡迎引導(dǎo)界面Welcome Activity,其次才啟動(dòng)登錄界面Login Activity,界面如圖2所示。
當(dāng)用戶輸完賬號(hào)密碼點(diǎn)擊登錄按鈕之后,啟動(dòng)一個(gè)透明背景加載等待的Loading Activity擋在Login Activity前面,這樣做的好處是防止用戶多次點(diǎn)擊登錄按鈕觸發(fā)登錄事件。
該Loading Activity首先獲取Login Activity傳過(guò)來(lái)用戶賬號(hào)和密碼,然后開(kāi)啟一個(gè)線程發(fā)送請(qǐng)求到服務(wù)器進(jìn)行驗(yàn)證。
若服務(wù)器返回成功登錄的狀態(tài)時(shí),這時(shí)Loading Activity會(huì)通知Login Activity進(jìn)行界面跳轉(zhuǎn)并且調(diào)用finish()方法關(guān)閉自己,Login Activity接收到登錄通知,就會(huì)啟動(dòng)主頁(yè)面Main Activity,主界面如圖3所示。
登錄界面
主界面
2.2查看用戶信息模塊的設(shè)計(jì)與實(shí)現(xiàn)
用戶成功登錄客戶端后,點(diǎn)擊圖3主界面中的“個(gè)人信息”或者“設(shè)置”中的個(gè)人信息項(xiàng),Activity會(huì)向服務(wù)器的User-s CRUDController控制器發(fā)出“get Specific User Role Info”請(qǐng)求,控制器會(huì)以json形式返回用戶信息數(shù)據(jù),緊接著Activity調(diào)用Jso-n Util類解析傳送數(shù)據(jù)展示給用戶,如圖4所示,相關(guān)代碼如下:
List
【安卓設(shè)備管理論文】相關(guān)文章:
安卓論文開(kāi)題報(bào)告范文09-30
安卓實(shí)習(xí)心得01-10
安卓總結(jié)與展望10-01
安卓實(shí)習(xí)總結(jié)10-06
安卓項(xiàng)目總結(jié)10-06
安卓在物業(yè)管理改進(jìn)系統(tǒng)中的運(yùn)用論文10-08
安卓開(kāi)發(fā)實(shí)習(xí)心得06-07