基于Android健康服務(wù)終端藍(lán)牙傳輸軟件的設(shè)計(jì)
摘要 在一款基于Android操作系統(tǒng)的健康服務(wù)終端設(shè)計(jì)基礎(chǔ)上,介紹了一種基于Android的藍(lán)牙應(yīng)用程序的設(shè)計(jì)方法。通過分析藍(lán)牙及Andr oid操作系統(tǒng),重點(diǎn)研究了在Android操作系統(tǒng)對(duì)藍(lán)牙的支持,最后設(shè)計(jì)出了基于Android操作系統(tǒng)的藍(lán)牙應(yīng)用軟件,運(yùn)行測試,符合設(shè)計(jì)要求,具有一定應(yīng)用性。
關(guān)鍵詞 藍(lán)牙;Android;健康服務(wù)終端
隨著物聯(lián)網(wǎng)技術(shù)的不斷推動(dòng),計(jì)算機(jī)、無線通信、消費(fèi)類電子呈現(xiàn)快速發(fā)展。體現(xiàn)物聯(lián)網(wǎng)應(yīng)用的熱點(diǎn)健康監(jiān)護(hù)領(lǐng)域,各種傳感器及無線的應(yīng)用,更能體現(xiàn)出物聯(lián)網(wǎng)技術(shù)的優(yōu)勢。作為當(dāng)今市場支持范圍最廣泛、功能最豐富且安全的藍(lán)牙技術(shù)與物聯(lián)網(wǎng)技術(shù)。首先,藍(lán)牙技術(shù)包含了傳感器技術(shù)、識(shí)別技術(shù)、移動(dòng)通信技術(shù)等,這些技術(shù)與物聯(lián)網(wǎng)密切相關(guān)。其次,藍(lán)牙的低功耗被看作消費(fèi)電子產(chǎn)品、體育、健康護(hù)理、汽車、自動(dòng)化等領(lǐng)域一大技術(shù)突破,也是物聯(lián)網(wǎng)技術(shù)的重要組成部分。尤其是藍(lán)牙4.0標(biāo)準(zhǔn)擁有著低耗能、傳輸范圍更大、支持拓?fù)浣Y(jié)構(gòu)等特性。藍(lán)牙技術(shù)的不斷進(jìn)步將為物聯(lián)網(wǎng)的發(fā)展提供動(dòng)力。而Android操作系統(tǒng)在兩年多的時(shí)間里,飛速發(fā)展,成功超越了塞班、IOS、微軟等操作系統(tǒng),足以證明其發(fā)展?jié)摿癘S未來的發(fā)展趨勢。尤其是Android的開放性,大大降低了產(chǎn)品的成本,3.0版本及4.0版本對(duì)于平板電腦的支持,這足以使得Android在OS市場占有不敗之地。本文結(jié)合兩者的優(yōu)勢,詳細(xì)分析了藍(lán)牙技術(shù)和Android操作系統(tǒng),并研究了在Android下如何對(duì)藍(lán)牙進(jìn)行應(yīng)用,最后設(shè)計(jì)出一款基于Android健康服務(wù)終端的藍(lán)牙傳輸軟件。
1 藍(lán)牙技術(shù)
藍(lán)牙技術(shù)聯(lián)盟(Bluetooth SIG)成立于1998年,是由愛立信、英特爾、聯(lián)想、微軟、摩托羅拉、諾基亞及東芝等公司發(fā)起成立??偛吭O(shè)在美國柯克蘭州,從建立之初到現(xiàn)在共有13 528個(gè)全球成員,這些成員之間進(jìn)行廣泛的合作,為藍(lán)牙技術(shù)的發(fā)展提供指導(dǎo)意見,推動(dòng)藍(lán)牙的發(fā)展。同時(shí)在香港、北京、臺(tái)北和日本東京、韓國首爾和瑞典的馬爾摩都有辦事機(jī)構(gòu)。
藍(lán)牙無線通信技術(shù)工作在工業(yè)、科學(xué)以及醫(yī)學(xué)上公用的2.4 GHz ISM公用頻段,這一頻段全球通用且無需授權(quán)。藍(lán)牙系統(tǒng)采用全雙工分時(shí)傳輸信息技術(shù),信息以分組結(jié)構(gòu)的方式進(jìn)行數(shù)據(jù)交換。在傳輸過程中,各信息分組用不同的跳頻算法實(shí)現(xiàn)信息傳輸。“跳頻”技術(shù)是把頻帶分成若干個(gè)跳頻信道,在一次連接中,無線電收發(fā)器按一定的碼序列不斷地從一個(gè)信道“跳”到另一個(gè)信道,只有收發(fā)雙方按這個(gè)規(guī)律進(jìn)行通信,而其他的干擾不可能按同樣的規(guī)律進(jìn)行干擾;跳頻的瞬時(shí)帶寬很窄,這就使得來自同樣工作在2.4 GHzISM頻段的家用電器,如微波爐等帶來干擾的可能性變得很小。與其他工作在相同頻段的無線系統(tǒng)相比,藍(lán)牙跳頻每秒可以達(dá)到1 600次,速度更快,而且數(shù)據(jù)包更短,從而使藍(lán)牙比其他系統(tǒng)更穩(wěn)定。此外,藍(lán)牙通信還具有以下優(yōu)點(diǎn):(1)消耗功率極低。(2)輻射小,對(duì)人體安全影響不大。(3)成本低廉,容易實(shí)現(xiàn)。
目前,藍(lán)牙技術(shù)已經(jīng)得到普遍的應(yīng)用,全球大約80%以上的手機(jī)使用了藍(lán)牙技術(shù)。藍(lán)牙技術(shù)的普及為物聯(lián)網(wǎng)的發(fā)展提供了一種技術(shù)選擇,具有極大的發(fā)展空間。
2 Android操作系統(tǒng)
Android是專為移動(dòng)終端打造的開放、完整的移動(dòng)平臺(tái),它是一款基于Linux內(nèi)核的開源操作系統(tǒng),由操作系統(tǒng)、中間件、用戶界面和應(yīng)用程序組成。由Google及其開放手機(jī)聯(lián)盟共同研發(fā),并在2008年9月份推出了Android第一版。
Android操作系統(tǒng)架構(gòu)從下到上有5部分組成:Linux內(nèi)核、Android Runtime、庫、應(yīng)用程序框架、應(yīng)用程序。Android系統(tǒng)架構(gòu)如圖1所示。
Linux內(nèi)核(Linux Kernel)。Android基于Linux2.6提供核心系統(tǒng)服務(wù),這是Android平臺(tái)開放的基礎(chǔ),它提供了例如安全機(jī)制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧、驅(qū)動(dòng)模型等內(nèi)容。Linux Kernel也作為硬件和軟件之間的抽象層,它隱藏具體硬件細(xì)節(jié)而為上層提供統(tǒng)一的服務(wù),使得應(yīng)用開發(fā)人員無需關(guān)心硬件細(xì)節(jié)。
Android Runtime。Android包含一個(gè)核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個(gè)Android應(yīng)用程序是Dalv ik虛擬機(jī)中的實(shí)例,運(yùn)行在他們自己的進(jìn)程中。Dalvik被設(shè)計(jì)成在一個(gè)設(shè)備可以高效地運(yùn)行多個(gè)虛擬機(jī)。Dalvik VM虛擬機(jī)可執(zhí)行文件格式是.dex,dex格式是專為Dalvik設(shè)計(jì)的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)。
Libraries。Android包含一個(gè)C/C++庫的集合,這些庫供Android系統(tǒng)的不同組件使用。這些功能通過Android的應(yīng)用程序框架(Applica tion Framework)暴露給開發(fā)者。
Application Framework。通過提供開放的開發(fā)平臺(tái),Android使開發(fā)者能夠編制極其豐富和新穎的應(yīng)用程序。開發(fā)者可以自由地利用設(shè)備硬件優(yōu)勢、訪問位置信息、運(yùn)行后臺(tái)服務(wù)、設(shè)置鬧鐘、向狀態(tài)欄添加通知等等,很多很多。
應(yīng)用層(Applications)。Android裝配一個(gè)核心應(yīng)用程序集合,包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、聯(lián)系人和其他設(shè)置。所有應(yīng)用程序都是用Java編程語言寫的。
Android作為第一款完整的、開放的、免費(fèi)的平臺(tái),在僅僅兩年多的時(shí)間,從最初的1.0版本到現(xiàn)在主流的2.3版本,以至剛剛發(fā)布的4.0版本,每個(gè)版本的發(fā)布對(duì)于Google來說都是一個(gè)質(zhì)的飛躍,根據(jù)市研機(jī)構(gòu)Gartner在2011年第二季度的OS份額調(diào)查數(shù)據(jù)顯示,Android市場占有率達(dá)43.4%,成為最大的智能手機(jī)系統(tǒng),隨著Android手機(jī)的普及,Android應(yīng)用的需求必定會(huì)越來越大,這將是一個(gè)有著巨大潛力的市場。
3 Android操作系統(tǒng)下藍(lán)牙的研究
Android平臺(tái)支持藍(lán)牙協(xié)議棧,因此支持在兩個(gè)藍(lán)牙設(shè)備之間進(jìn)行數(shù)據(jù)的傳輸。Android應(yīng)用框架層提供了允許藍(lán)牙進(jìn)行連接的API,通過這些API可以實(shí)現(xiàn)通過藍(lán)牙的應(yīng)用程序是無線連接,建立端到端的連接模式。使用藍(lán)牙API,可以實(shí)現(xiàn)應(yīng)用的如下功能:
(1)尋找其他藍(lán)牙設(shè)備。
(2)查詢與本地藍(lán)牙適配器配對(duì)的設(shè)備。
(3)建立RFCOMM信道。
(4)在兩個(gè)不同的藍(lán)牙設(shè)備之間傳輸數(shù)據(jù)。
(5)管理多個(gè)藍(lán)牙連接。
下面詳細(xì)介紹幾個(gè)重要的API:
BluetoothAdapter:代表本地的藍(lán)牙適配器,是所有藍(lán)牙交互的的人口點(diǎn)。利用它可以發(fā)現(xiàn)其他藍(lán)牙設(shè)備,查詢已經(jīng)綁定的設(shè)備,使用已知的MAC地址實(shí)例化一個(gè)藍(lán)牙設(shè)備和建立一個(gè)BluetoothServerSocket來監(jiān)聽來自其他設(shè)備的連接。
BluetoothDevice類:代表遠(yuǎn)端的藍(lán)牙設(shè)備,使用它請(qǐng)求遠(yuǎn)端藍(lán)牙設(shè)備連接或獲取遠(yuǎn)端藍(lán)牙設(shè)備的名稱、地址、種類和綁定狀態(tài)。
Bluetoothsocket類:代表藍(lán)牙套接字的接口,它是應(yīng)用程序通過輸入、輸出流與其他藍(lán)牙設(shè)備通信的連接點(diǎn)。
Blueboothserversocket類:代表打開服務(wù)連接來監(jiān)聽可能到來的連接請(qǐng)求,為連接兩個(gè)藍(lán)牙設(shè)備必須有一個(gè)設(shè)備作為服務(wù)器打開一個(gè)服務(wù)套接字。當(dāng)遠(yuǎn)端設(shè)備發(fā)起連接請(qǐng)求,并且已經(jīng)連接到了的時(shí)候,Blueboothserversoeket類將會(huì)返回一個(gè)bluetoothsocket。
Bluetoothclass類:描述了藍(lán)牙設(shè)備的一般特點(diǎn)和能力。它的只讀屬性集定義了設(shè)備的主、從設(shè)備類和一些相關(guān)服務(wù)。
4 藍(lán)牙傳輸軟件的實(shí)現(xiàn)
4.1 軟件功能描述
藍(lán)牙傳輸軟件主要實(shí)現(xiàn)對(duì)各個(gè)模塊的管理,模塊數(shù)據(jù)的接收、分析、存儲(chǔ)、發(fā)送及復(fù)雜的人機(jī)交互等任務(wù)。為能夠合理分配硬件資源、提供更人性化的界面以及使用通用的硬件設(shè)備,在軟件設(shè)計(jì)時(shí),健康服務(wù)終端采用Android操作系統(tǒng)為用戶界面。
4.2 圖形用戶界面設(shè)計(jì)
程序界面主要包括3個(gè)與用戶進(jìn)行交互的Activity:(1)模塊顯示。(2)血氧歷史記錄。(3)血壓歷史記錄。
為減少應(yīng)用所需的內(nèi)存量,項(xiàng)目沒有添加任何圖片及聲效。界面簡單直觀,便于操作。首先將各模塊列表作為應(yīng)用程序的主界面。程序運(yùn)行的最開始加載此項(xiàng)。
當(dāng)應(yīng)用程序啟動(dòng)后,第一個(gè)顯示出各個(gè)模塊的列表和當(dāng)前測試數(shù)據(jù)。界面設(shè)計(jì)通過XML的資源文件進(jìn)行定義。
歷史記錄模塊采用了專為Android系統(tǒng)設(shè)計(jì)的圖形庫AChartEngine,可以用于繪制多種圖表。
歷史記錄的顯示主要通過不同的線條顏色,點(diǎn)的形狀來區(qū)分顯示的不同內(nèi)容。
4.3 軟件功能設(shè)計(jì)
軟件功能設(shè)計(jì)包括藍(lán)牙管理,連接建立,數(shù)據(jù)傳輸及數(shù)據(jù)處理。
藍(lán)牙部分設(shè)計(jì)
在Android操作系統(tǒng)下,提供了對(duì)藍(lán)牙管理的API,藍(lán)牙開發(fā)流程如圖2所示。首先要判斷設(shè)備是否支持藍(lán)牙,并且保證藍(lán)牙可用。
mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
如果藍(lán)牙可用,則mBluetoothAdapter不為空,然后判斷藍(lán)牙是否打開,若未打開,則提示用戶打開藍(lán)牙。
到此,藍(lán)牙設(shè)備已經(jīng)打開。
在Android應(yīng)用程序開發(fā)中,若要建立兩個(gè)藍(lán)牙設(shè)備的連接,必須實(shí)現(xiàn)客戶端和服務(wù)器端代碼。一個(gè)用來開啟服務(wù)監(jiān)聽,一個(gè)發(fā)送連接請(qǐng)求。當(dāng)它們都擁有一個(gè)藍(lán)牙套接字在同一RFECOMM信道上時(shí),說明它們之間已經(jīng)建立好連接。服務(wù)器端采用accept()方法來建立連接。由于accept()方法是一種阻塞調(diào)用,因此不應(yīng)該放在主Acitvity里,要新建一個(gè)線程來管理。
而客戶端則采用connect()方法來建立連接。同樣也是一種阻塞調(diào)用,同樣需要新建一個(gè)線程來管理。
當(dāng)設(shè)備連接上以后,每個(gè)設(shè)備都擁有各自的Bluetoothsocket?,F(xiàn)在就可以實(shí)現(xiàn)設(shè)備之間數(shù)據(jù)共享了。同樣讀取和寫操作都是阻塞調(diào)用,需要建立一個(gè)專用的線程來管理。
在兩個(gè)Activity之間,可以用Handler傳遞信息,使用getInputStream()獲得由傳感器傳來的數(shù)據(jù)并顯示在主界面中。
4.4 藍(lán)牙傳輸軟件的運(yùn)行與測試
由于藍(lán)牙不能在虛擬機(jī)中測試,所以將程序打包后,安裝到支持藍(lán)牙的Android手機(jī)中,然后點(diǎn)擊血壓按鈕,將與血壓模塊建立連接,同時(shí)實(shí)時(shí)顯示當(dāng)前血壓值。點(diǎn)擊歷史記錄按鈕,則會(huì)顯示一周內(nèi)測試結(jié)果,并以圖片形式顯示出來。程序運(yùn)行結(jié)果如圖3和圖4所示。
5 結(jié)束語
Android在OS市場份額的不斷增加,足以體現(xiàn)出Android的優(yōu)勢,而藍(lán)牙4.0版本低功耗技術(shù)更適合于遠(yuǎn)程控制、醫(yī)療保健及運(yùn)動(dòng)感應(yīng)器等新興市場。文中結(jié)合兩者的優(yōu)勢,設(shè)計(jì)出一款基于android的藍(lán)牙傳輸軟件,主要應(yīng)用于健康服務(wù)領(lǐng)域,在實(shí)際生活中具有很強(qiáng)的應(yīng)用性。論文介紹了軟件的初步設(shè)計(jì),還有很多功能需要完善,比如界面的美化,更方便快捷地管理藍(lán)牙設(shè)計(jì),數(shù)據(jù)傳輸?shù)姆€(wěn)定性及準(zhǔn)確性等,這些將是以后研究的重點(diǎn)。