李黎國,張 輝,程 號
(西安電子科技大學電子工程學院,陜西 西安 710071)
隨著物聯網技術的不斷推動,計算機、無線通信、消費類電子呈現快速發展。體現物聯網應用的熱點健康監護領域,各種傳感器及無線的應用,更能體現出物聯網技術的優勢[1]。作為當今市場支持范圍最廣泛、功能最豐富且安全的藍牙技術與物聯網技術。首先,藍牙技術包含了傳感器技術、識別技術、移動通信技術等,這些技術與物聯網密切相關。其次,藍牙的低功耗被看作消費電子產品、體育、健康護理、汽車、自動化等領域一大技術突破,也是物聯網技術的重要組成部分。尤其是藍牙4.0標準擁有著低耗能、傳輸范圍更大、支持拓撲結構等特性。藍牙技術的不斷進步將為物聯網的發展提供動力。而Android操作系統在兩年多的時間里,飛速發展,成功超越了塞班、IOS、微軟等操作系統,足以證明其發展潛力及OS未來的發展趨勢。尤其是Android的開放性,大大降低了產品的成本,3.0版本及4.0版本對于平板電腦的支持,這足以使得Android在OS市場占有不敗之地。本文結合兩者的優勢,詳細分析了藍牙技術和Android操作系統,并研究了在Android下如何對藍牙進行應用,最后設計出一款基于Android健康服務終端的藍牙傳輸軟件。
藍牙技術聯盟(Bluetooth SIG)成立于1998年,是由愛立信、英特爾、聯想、微軟、摩托羅拉、諾基亞及東芝等公司發起成立。總部設在美國柯克蘭州,從建立之初到現在共有13528個全球成員,這些成員之間進行廣泛的合作,為藍牙技術的發展提供指導意見,推動藍牙的發展。同時在香港、北京、臺北和日本東京、韓國首爾和瑞典的馬爾摩都有辦事機構。
藍牙無線通信技術工作在工業、科學以及醫學上公用的2.4 GHz ISM公用頻段,這一頻段全球通用且無需授權。藍牙系統[2]采用全雙工分時傳輸信息技術,信息以分組結構的方式進行數據交換。在傳輸過程中,各信息分組用不同的跳頻算法實現信息傳輸。“跳頻”技術是把頻帶分成若干個跳頻信道,在一次連接中,無線電收發器按一定的碼序列不斷地從一個信道“跳”到另一個信道,只有收發雙方按這個規律進行通信,而其他的干擾不可能按同樣的規律進行干擾;跳頻的瞬時帶寬很窄,這就使得來自同樣工作在2.4 GHz ISM頻段的家用電器,如微波爐等帶來干擾的可能性變得很小。與其他工作在相同頻段的無線系統相比,藍牙跳頻每秒可以達到1600次,速度更快,而且數據包更短,從而使藍牙比其他系統更穩定。此外,藍牙通信還具有以下優點:(1)消耗功率極低。(2)輻射小,對人體安全影響不大。(3)成本低廉,容易實現。
目前,藍牙技術已經得到普遍的應用,全球大約80%以上的手機使用了藍牙技術。藍牙技術的普及為物聯網的發展提供了一種技術選擇,具有極大的發展空間。
Android是專為移動終端打造的開放、完整的移動平臺,它是一款基于Linux內核的開源操作系統,由操作系統、中間件、用戶界面和應用程序組成。由Google及其開放手機聯盟共同研發,并在2008年9月份推出了Android第一版。
Android操作系統架構[3]從下到上有5部分組成:Linux內核、Android Runtime、庫、應用程序框架、應用程序。Android系統架構如圖1所示。

圖1 Android系統架構
Linux內核(Linux Kernel)。Android基于 Linux 2.6提供核心系統服務,這是Android平臺開放的基礎,它提供了例如安全機制、內存管理、進程管理、網絡堆棧、驅動模型等內容。Linux Kernel也作為硬件和軟件之間的抽象層,它隱藏具體硬件細節而為上層提供統一的服務,使得應用開發人員無需關心硬件細節。
Android Runtime。Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android應用程序是Dalvik虛擬機中的實例,運行在他們自己的進程中。Dalvik被設計成在一個設備可以高效地運行多個虛擬機。Dalvik VM虛擬機可執行文件格式是.dex,dex格式是專為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。
Libraries。Android包含一個C/C++庫的集合,這些庫供Android系統的不同組件使用。這些功能通過Android的應用程序框架(Application Framework)暴露給開發者
Application Framework。通過提供開放的開發平臺,Android使開發者能夠編制極其豐富和新穎的應用程序。開發者可以自由地利用設備硬件優勢、訪問位置信息、運行后臺服務、設置鬧鐘、向狀態欄添加通知等等,很多很多。
應用層(Applications)。Android裝配一個核心應用程序集合,包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、聯系人和其他設置。所有應用程序都是用Java編程語言寫的。
Android作為第一款完整的、開放的、免費的平臺,在僅僅兩年多的時間,從最初的1.0版本到現在主流的2.3版本,以至剛剛發布的4.0版本,每個版本的發布對于Google來說都是一個質的飛躍,根據市研機構Gartner在2011年第二季度的OS份額調查數據顯示,Android市場占有率達43.4%,成為最大的智能手機系統,隨著Android手機的普及,Android應用的需求必定會越來越大,這將是一個有著巨大潛力的市場。
Android平臺支持藍牙協議棧[4],因此支持在兩個藍牙設備之間進行數據的傳輸。Android應用框架層提供了允許藍牙進行連接的API,通過這些API可以實現通過藍牙的應用程序是無線連接,建立端到端的連接模式。使用藍牙API,可以實現應用的如下功能:
(1)尋找其他藍牙設備。
(2)查詢與本地藍牙適配器配對的設備。
(3)建立RFCOMM信道。
(4)在兩個不同的藍牙設備之間傳輸數據。
(5)管理多個藍牙連接。
下面詳細介紹幾個重要的API:
BluetoothAdapter:代表本地的藍牙適配器,是所有藍牙交互的的入口點。利用它可以發現其他藍牙設備,查詢已經綁定的設備,使用已知的MAC地址實例化一個藍牙設備和建立一個BluetoothServerSocket來監聽來自其他設備的連接。
BluetoothDevice類:代表遠端的藍牙設備,使用它請求遠端藍牙設備連接或獲取遠端藍牙設備的名稱、地址、種類和綁定狀態。
Bluetoothsocket類:代表藍牙套接字的接口,它是應用程序通過輸入、輸出流與其他藍牙設備通信的連接點。
Blueboothserversocket類:代表打開服務連接來監聽可能到來的連接請求,為連接兩個藍牙設備必須有一個設備作為服務器打開一個服務套接字。當遠端設備發起連接請求,并且已經連接到了的時候,Blueboothserversocket類將會返回一個bluetoothsocket。
Bluetoothclass類:描述了藍牙設備的一般特點和能力。它的只讀屬性集定義了設備的主、從設備類和一些相關服務。
藍牙傳輸軟件主要實現對各個模塊的管理,模塊數據的接收、分析、存儲、發送及復雜的人機交互等任務。為能夠合理分配硬件資源、提供更人性化的界面以及使用通用的硬件設備,在軟件設計時,健康服務終端采用Android操作系統為用戶界面。
程序界面主要包括3個與用戶進行交互的Activity:(1)模塊顯示。(2)血氧歷史記錄。(3)血壓歷史記錄。
為減少應用所需的內存量,項目沒有添加任何圖片及聲效。界面簡單直觀,便于操作。首先將各模塊列表作為應用程序的主界面。程序運行的最開始加載此項。
當應用程序啟動后,第一個顯示出各個模塊的列表和當前測試數據。界面設計通過XML的資源文件進行定義。
歷史記錄模塊采用了專為Android系統設計的圖形庫AChartEngine[5],可以用于繪制多種圖表。
歷史記錄的顯示主要通過不同的線條顏色,點的形狀來區分顯示的不同內容。
軟件功能設計包括藍牙管理,連接建立,數據傳輸及數據處理。
藍牙部分設計
在Android操作系統下,提供了對藍牙管理的API,藍牙開發流程如圖2所示。首先要判斷設備是否支持藍牙,并且保證藍牙可用。
mBluetoothAdapter=BluetoothAdapter.getDefault-Adapter();
如果藍牙可用,則mBluetoothAdapter不為空,然后判斷藍牙是否打開,若未打開,則提示用戶打開藍牙。

到此,藍牙設備已經打開。
在Android應用程序開發中,若要建立兩個藍牙設備的連接,必須實現客戶端和服務器端代碼。一個用來開啟服務監聽,一個發送連接請求。當它們都擁有一個藍牙套接字在同一RFECOMM信道上時,說明它們之間已經建立好連接。服務器端采用accept()方法來建立連接。由于accept()方法是一種阻塞調用,因此不應該放在主Acitvity里,要新建一個線程來管理。

圖2 藍牙開發流程
而客戶端則采用connect()方法來建立連接。同樣也是一種阻塞調用,同樣需要新建一個線程來管理。

當設備連接上以后,每個設備都擁有各自的Bluetoothsocket。現在就可以實現設備之間數據共享了。同樣讀取和寫操作都是阻塞調用,需要建立一個專用的線程來管理。


在兩個Activity之間,可以用Handler傳遞信息,使用getInputStream()獲得由傳感器傳來的數據并顯示在主界面中。

由于藍牙不能在虛擬機中測試,所以將程序打包后,安裝到支持藍牙的Android手機中,然后點擊血壓按鈕,將與血壓模塊建立連接,同時實時顯示當前血壓值。點擊歷史記錄按鈕,則會顯示一周內測試結果,并以圖片形式顯示出來。程序運行結果如圖3和圖4所示。

圖3 主界面

圖4 歷史記錄界面
Android在OS市場份額的不斷增加,足以體現出Android的優勢,而藍牙4.0版本低功耗技術更適合于遠程控制、醫療保健及運動感應器等新興市場。文中結合兩者的優勢,設計出一款基于android的藍牙傳輸軟件,主要應用于健康服務領域,在實際生活中具有很強的應用性。論文介紹了軟件的初步設計,還有很多功能需要完善,比如界面的美化,更方便快捷地管理藍牙設計,數據傳輸的穩定性及準確性等,這些將是以后研究的重點。
[1]謝昕.基于物聯網的遠程家庭健康監護傳感器網絡研究[D].北京:北京郵電大學,2011.
[2]浦東兵,趙東來,張雪,等.基于藍牙的智能家居網管設計[J].信息技術,2010(2):11 -12.
[3]E2EColud工作室.深入淺出 Google Android[M].北京:人民郵電出版社,2009.
[4]黃偉敏.Android平臺的即時通信系統客戶端設計方案[J].現代電子技術,2011,35(16):148 -150.
[5]鮑立,莊奕琪.基于藍牙的MPEG4無線視頻傳輸研究[J].電子科技,2003,16(12):37 -39,41.
[6]白璐,李國民.Android系統WMA文件播放功能的設計與實現[J].電子科技,2011,24(9):158 -161.