• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Android系統(tǒng)的低功耗藍(lán)牙應(yīng)用程序開發(fā)

      2014-09-21 11:57:30沈峰李德勝
      關(guān)鍵詞:程序開發(fā)外設(shè)低功耗

      李 俠 沈峰 李德勝

      (1.安徽電子信息職業(yè)技術(shù)學(xué)院軟件學(xué)院,安徽 蚌埠 233000;2.安徽科技學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,安徽 鳳陽 233100)

      藍(lán)牙無線技術(shù)是目前使用最為廣泛的短距離無線傳輸標(biāo)準(zhǔn)之一[1]。盡管藍(lán)牙技術(shù)聯(lián)盟(Bluetooth SIG)于2010年6月就已發(fā)布藍(lán)牙4.0技術(shù)標(biāo)準(zhǔn),但應(yīng)用于Android智能手機(jī)則是從2012年5月Galaxy S3發(fā)布開始。隨后支持藍(lán)牙4.0的Android機(jī)型紛紛發(fā)布。但Android原生系統(tǒng)不支持藍(lán)牙4.0,導(dǎo)致開發(fā)者無法開發(fā)可以運(yùn)行在不同品牌不同機(jī)型的Android應(yīng)用程序。2013年7月Android 4.3系統(tǒng)發(fā)布,正式支持藍(lán)牙4.0。相對于藍(lán)牙 2.1或者 3.0等傳統(tǒng)藍(lán)牙技術(shù)的高耗電性,對于那些采用紐扣電池供電的小藍(lán)牙外設(shè)必須經(jīng)常更換電池或充電,因此,藍(lán)牙外設(shè)沒有得到廣泛應(yīng)用。藍(lán)牙4.0極低的運(yùn)行和待機(jī)功耗使一粒紐扣電池可連續(xù)工作1 a。根據(jù)目前安卓設(shè)備全球75%的占有率和藍(lán)牙4.0外設(shè)與安卓設(shè)備之間低功耗的連接方式,可穿戴設(shè)備及物聯(lián)網(wǎng)將會(huì)得到快速發(fā)展。采用傳統(tǒng)藍(lán)牙進(jìn)行產(chǎn)品開發(fā)的文獻(xiàn)較多,但由于Android 4.3發(fā)布近10個(gè)月,有關(guān)開發(fā)文獻(xiàn)較少,另一方面藍(lán)牙4.0開發(fā)與傳統(tǒng)藍(lán)牙開發(fā)技術(shù)差別較大[3]。因此本文首先簡要介紹藍(lán)牙4.0及低功耗技術(shù)協(xié)議棧,然后重點(diǎn)介紹Android 4.3低功耗應(yīng)用程序分層結(jié)構(gòu)和關(guān)鍵技術(shù),最后給出一個(gè)應(yīng)用程序開發(fā)實(shí)例進(jìn)行分析。

      1 藍(lán)牙4.0及低功耗技術(shù)協(xié)議棧

      藍(lán)牙4.0是目前最新的藍(lán)牙標(biāo)準(zhǔn),它包含了傳統(tǒng)藍(lán)牙、高速藍(lán)牙和低功耗藍(lán)牙標(biāo)準(zhǔn),核心是藍(lán)牙低功耗技術(shù) (Bluetooth Low Energy,簡稱BLE)[4]。BLE耗電大概是傳統(tǒng)藍(lán)牙的十分之一,低功耗主要體現(xiàn)在等機(jī)功耗的減少、高速連接的實(shí)現(xiàn)和峰值功率的降低等3個(gè)方面。藍(lán)牙4.0支持 Bluetooth Smart Ready(簡稱BSR)設(shè)備和Bluetooth Smart(簡稱BS)設(shè)備。BLE設(shè)備與BSR設(shè)備進(jìn)行連接,作為傳感器應(yīng)用在小型無線電子產(chǎn)品中用于收集特定類型的信息。BSR設(shè)備包括手機(jī)、平板電腦、個(gè)人電腦、機(jī)頂盒及電視機(jī)等,可接受傳統(tǒng)藍(lán)牙設(shè)備和BLE設(shè)備發(fā)送的數(shù)據(jù),并傳送給相應(yīng)的應(yīng)用軟件,將數(shù)據(jù)轉(zhuǎn)換為有用的信息,本文將以Android 4.3平臺手機(jī)作為BSR典型設(shè)備進(jìn)行說明。

      藍(lán)牙低功耗技術(shù)協(xié)議棧如圖1所示。整個(gè)棧由控制器(Controller)、主機(jī)(Host)和應(yīng)用程序(Apps)組成??刂破鲗颖硎舅{(lán)牙采用的頻段、信道、調(diào)制方式、數(shù)據(jù)包結(jié)構(gòu)和控制流程等;主機(jī)層由邏輯鏈路控制適配協(xié)議(L2CAP)、安全管理協(xié)議(SMP)、屬性協(xié)議(ATT)、通用屬性規(guī)范(GATT)和通用接入規(guī)范(GAP)組成。應(yīng)用程序?qū)又卸x的各種規(guī)范(profile)規(guī)定了實(shí)現(xiàn)此功能的BLE設(shè)備向外提供的編程接口要求。一個(gè)BLE設(shè)備可實(shí)現(xiàn)多個(gè)應(yīng)用規(guī)范。GAP定義了如何發(fā)現(xiàn)BLE設(shè)備并建立與BSR設(shè)備的連接。應(yīng)用層的各種規(guī)范都是基于 GATT的,GATT規(guī)定了如何發(fā)送和接收設(shè)備的各種屬性值。ATT把屬性表示為服務(wù)(service)的集合。服務(wù)由多個(gè)特征組成,每個(gè)特征由128位的UUID(通用唯一識別碼)標(biāo)識。每個(gè)特征由properties、value和descriptor字段組成。Properties表示是否可讀寫;value表示特征值;descriptor用于對特征作更詳細(xì)的描述。在Android 4.3編程中,這些概念非常關(guān)鍵,圖2顯示應(yīng)用層中的心率規(guī)范(heart rate profile)及相關(guān)概念。心率規(guī)范由HRS(Heart Rate Service)和DIS(Device Information Service)2個(gè)服務(wù)組成。HRS由3個(gè)特征組成,圖2只列出了Measurement特征,其中80表示心率傳感器測量出的值,Notify表示此值允許讀取。

      圖1 藍(lán)牙低功耗技術(shù)協(xié)議棧

      圖2 心率規(guī)范組成

      2 BLE應(yīng)用程序體系結(jié)構(gòu)和關(guān)鍵技術(shù)

      2.1 應(yīng)用程序體系結(jié)構(gòu)

      軟件體系結(jié)構(gòu)表示軟件系統(tǒng)基礎(chǔ)的結(jié)構(gòu)組織方案,最常見的是分層結(jié)構(gòu)[5]。在分層結(jié)構(gòu)中各層功能明確,高層使用低層提供的各種服務(wù),而低層并不關(guān)注高層的存在。采用分層技術(shù)通??梢允垢黝愰_發(fā)者更專注于本層的工作而不需要知道其他層的情況。傳統(tǒng)藍(lán)牙應(yīng)用程序開發(fā)[6]較復(fù)雜,為簡化BLE程序開發(fā),在設(shè)計(jì)藍(lán)牙4.0的協(xié)議棧時(shí)就作了考慮。BLE應(yīng)用程序設(shè)計(jì)為3層:表示層、業(yè)務(wù)層與通信層。表示層處理用戶與軟件系統(tǒng)之間的交互,如選擇連接設(shè)備、斷開設(shè)備、顯示業(yè)務(wù)層處理的各種結(jié)果等;業(yè)務(wù)層處理問題域中的各種業(yè)務(wù),如對通信層獲取的特征value字段值進(jìn)行統(tǒng)計(jì)、分析,然后把結(jié)果上傳到表示層;通信層負(fù)責(zé)與一個(gè)或多個(gè)BLE設(shè)備連接通信并保證向上層及時(shí)可靠地提供信息。

      2.2 設(shè)備地位的變化

      當(dāng)一個(gè)Android手機(jī)與一個(gè)BLE設(shè)備交互時(shí),手機(jī)作為中心(Central)設(shè)備存在,負(fù)責(zé)掃描、發(fā)現(xiàn)和連接BLE設(shè)備;BLE設(shè)備作為外設(shè)(Peripheral)存在,負(fù)責(zé)響應(yīng)連接。當(dāng)兩者一旦建立聯(lián)系后,在進(jìn)行通信的過程中,它們的地位就發(fā)生了改變。例如Android 4.3手機(jī)和心率測量計(jì)的關(guān)系;心率測量計(jì)是符合心率測量計(jì)規(guī)范(Heart Rate Profile)的BLE外設(shè),手機(jī)上安裝支持BLE的心率測量應(yīng)用程序。當(dāng)用戶握住心率測量計(jì)就可以測量出心跳次數(shù)。如果心率測量計(jì)把測量數(shù)據(jù)傳送給手機(jī),這時(shí)心率測量計(jì)是GATT服務(wù)器,手機(jī)是GATT客戶機(jī)。反之,如果手機(jī)發(fā)送數(shù)據(jù)給測量計(jì),手機(jī)就是服務(wù)器,測量計(jì)是客戶機(jī)。本文開發(fā)的手機(jī)應(yīng)用程序是GATT客戶機(jī)程序,從測量計(jì)獲取數(shù)據(jù);心率測量計(jì)作為GATT服務(wù)器向手機(jī)提供測量數(shù)據(jù)。

      2.3 開發(fā)BLE應(yīng)用程序的關(guān)鍵技術(shù)

      BLE程序開發(fā)的主要內(nèi)容有用戶界面設(shè)計(jì)、業(yè)務(wù)層數(shù)據(jù)處理和通信層數(shù)據(jù)通信。通信層程序?qū)崿F(xiàn)的關(guān)鍵技術(shù)包括BLE授權(quán)、開啟BLE功能、搜索BLE外設(shè)、建立連接及通信等。

      2.3.1 BLE 授權(quán)

      與普通藍(lán)牙程序一樣,為了使Android手機(jī)能夠與藍(lán)牙外設(shè)通信,必須要在應(yīng)用程序的Android-Manifest.xml文件中進(jìn)行授權(quán)。

      2.3.2 檢查并開啟BLE功能

      應(yīng)用程序使用藍(lán)牙功能時(shí),首先需要驗(yàn)證手機(jī)操作系統(tǒng)Android是否支持BLE功能。如果支持,則需要檢查手機(jī)是否具有藍(lán)牙硬件功能。軟件通過藍(lán)牙適配器類BluetoothAdapter表示此硬件功能。應(yīng)用程序與適配器對象進(jìn)行交互,獲取適配器之后,需要查看是否開啟,可以調(diào)用isEnabled()來查詢當(dāng)前藍(lán)牙設(shè)備的開關(guān)狀態(tài),如果返回值為false,則表示藍(lán)牙設(shè)備沒有打開,這時(shí)以ACTION_REQUEST_ENABLE為參數(shù)新建一個(gè)intent,然后調(diào)用startActivity-ForResult()運(yùn)行一個(gè)Activity讓用戶選擇是否在一定時(shí)間內(nèi)開啟藍(lán)牙。

      2.3.3 搜索BLE設(shè)備

      為了搜索BLE設(shè)備,必須使用BluetoothAdapter類的 startLeScan()方法,此方法使用接口 BluetoothAdapter.LeScanCallback作為參數(shù),必須要實(shí)現(xiàn)這個(gè)回調(diào)接口,通過接口中的回調(diào)函數(shù)得到BLE設(shè)備。與傳統(tǒng)藍(lán)牙程序相似,由于搜索外設(shè)非常消耗電能,因此一旦搜索到所需設(shè)備,應(yīng)該立即停止搜索。另外,搜索時(shí)長必須設(shè)定限制,不能無限制進(jìn)行。如果只想搜索指定類型的BLE外設(shè),則調(diào)用startLeScan(UUID[],BluetoothAdapter.LeScanCallback),在 UUID[]數(shù)組中指定 GATT服務(wù)器的UUID。實(shí)現(xiàn)上述功能的主要代碼如下:

      2.3.4 與GATT服務(wù)器建立連接及通信

      搜索到BLE設(shè)備后,Android手機(jī)為了與BLE設(shè)備交互,第一步就需要與 GATT服務(wù)器連接,GATT服務(wù)器位于BLE設(shè)備中,也就是與BLE設(shè)備連接。為了連接GATT服務(wù)器,使用BluetoothDevice類的connectGatt()方法,此方法有3個(gè)參數(shù):第一個(gè)表示Context對象;第二個(gè)是布爾變量autoConnect,表示當(dāng)周圍BLE設(shè)備有效時(shí),Android手機(jī)是否自動(dòng)連接;第三個(gè)變量是BluetoothGattCallback的變量,表示回調(diào)函數(shù)。主要示例代碼如下:

      以上代碼表示客戶端應(yīng)用程序連接到GATT服務(wù)器。返回值是BluetoothGatt類實(shí)例mBluetooth-Gatt。其中參數(shù)mGattCallback需要實(shí)現(xiàn)多個(gè)回調(diào)函數(shù),通過這些回調(diào)函數(shù)可以把BLE設(shè)備的連接狀態(tài)、服務(wù)和特征傳遞到應(yīng)用程序業(yè)務(wù)層。主要示例代碼如下:

      當(dāng)發(fā)生BLE設(shè)備狀態(tài)改變、發(fā)現(xiàn)服務(wù)、讀取特征和特征更改等事件時(shí),就會(huì)執(zhí)行上面對應(yīng)的回調(diào)函數(shù),每個(gè)回調(diào)函數(shù)中都調(diào)用broadcastUpdate()函數(shù),該函數(shù)是自定義的重載函數(shù),有2種形式:一種只有1個(gè)參數(shù)表示Intent,對接收的值進(jìn)行廣播;另一種有2個(gè)參數(shù),第1個(gè)參數(shù)表示一個(gè)Intent,第2個(gè)參數(shù)表示接收到的BLE的特征,此函數(shù)根據(jù)心率格式規(guī)范分析出特征中的Value值,如圖2所示,然后將此值附加到Intent中進(jìn)行廣播。該函數(shù)廣播出的值由應(yīng)用程序業(yè)務(wù)層通過 mGattUpdateReceiver中的回調(diào)函數(shù)接收并進(jìn)行統(tǒng)計(jì)、排序等處理。這樣就實(shí)現(xiàn)了BLE設(shè)備數(shù)據(jù)傳遞到Android手機(jī)中的功能。業(yè)務(wù)層中相關(guān)代碼如下:

      3 低功耗藍(lán)牙應(yīng)用程序?qū)嵗治?/h2>

      由于Android 4.3剛發(fā)布不久,關(guān)于BLE程序開發(fā)的知識很少,在Google公司提供的BLE示例程序基礎(chǔ)上研究并開發(fā)一款支持BLE的Android手機(jī)應(yīng)用程序。此程序自動(dòng)連接BLE心率測量計(jì),手機(jī)端實(shí)時(shí)顯示測量的心率,程序主要關(guān)注通信和數(shù)據(jù)接收。在此基礎(chǔ)上可以進(jìn)行業(yè)務(wù)層功能擴(kuò)展,比如對歷史采集數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和分析,然后以圖形等方式在表示層中顯示。

      3.1 應(yīng)用程序體系結(jié)構(gòu)

      程序采取分層結(jié)構(gòu),表示層功能主要掃描手機(jī)周圍的BLE設(shè)備,并根據(jù)用戶選擇顯示設(shè)備的連接狀態(tài)和Value字段值;業(yè)務(wù)層功能是接收通信層傳輸?shù)臄?shù)據(jù);通信層主要功能是與BLE設(shè)備建立連接、對獲取數(shù)據(jù)進(jìn)行語法分析及與GATT服務(wù)器進(jìn)行通信等。

      3.2 應(yīng)用程序中主要類圖與序列圖及功能

      程序主要由 DeviceScanActivity、DeviceControlActivity和BluetoothLeService這3個(gè)類組成,結(jié)構(gòu)如圖3所示。

      圖3 應(yīng)用程序結(jié)構(gòu)圖

      應(yīng)用程序入口點(diǎn)類DeviceScanActivity用于掃描并顯示手機(jī)周圍可用的BLE設(shè)備。通過onCreate()判斷手機(jī)是否支持BLE功能并判斷藍(lán)牙功能是否打開;通過 scanLeDevice和 mLeScanCallback掃描BLE設(shè)備。用戶在操作界面上選擇某個(gè)BLE設(shè)備后將調(diào)用DeviceControlActivity。對于指定的BLE設(shè)備,類DeviceControlActivity為提供用戶接口界面,通過此界面可以連接BLE設(shè)備、顯示Value字段數(shù)據(jù)、顯示設(shè)備提供的GATT服務(wù)和特征。在onCreate中調(diào)用 bindService函數(shù)綁定BluetoothLeService,并通過回調(diào)函數(shù)mServiceConnection連接GATT服務(wù)器。通過mGattUpdateReceiver回調(diào)函數(shù)接收來自BluetoothLeService的廣播數(shù)據(jù)(包括連接狀態(tài)、服務(wù)、特征和Value字段值),并使用這些數(shù)據(jù)更新用戶界面。以上2個(gè)類屬于表示層的內(nèi)容。由于程序比較簡單,因此把業(yè)務(wù)層中接收通信層數(shù)據(jù)的功能也放在類DeviceControlActivity中 BroadcastReceiver的相關(guān)代碼中實(shí)現(xiàn)。

      BluetoothLeService用于負(fù)責(zé)連接位于BLE設(shè)備上的GATT服務(wù)器并與之通信。其中connect函數(shù)首先獲取BLE設(shè)備,然后連接設(shè)備上的GATT服務(wù)器。連接服務(wù)器時(shí)要實(shí)現(xiàn)4個(gè)針對BLE設(shè)備的回調(diào)函數(shù),分別是連接狀態(tài)監(jiān)測、服務(wù)發(fā)現(xiàn)監(jiān)測、特征中Value字段值及其更新值的讀取。其中value字段值并不是直接得到的,是根據(jù)心率應(yīng)用規(guī)范對特征數(shù)據(jù)進(jìn)行語法分析之后得到。這些回調(diào)函數(shù)的結(jié)果通過廣播函數(shù)broadcastUpdate發(fā)送到DeviceControlActivity中的 BroadcastReceiver對象。DeviceControlActivity類中BroadcastReceiver函數(shù)根據(jù)從服務(wù)器端接收到的數(shù)據(jù),通過函數(shù)displayGatt-Services顯示各種服務(wù)和服務(wù)中包含的各個(gè)特征和函數(shù)displayData顯示value字段值。

      4 結(jié)語

      由于藍(lán)牙4.0低功耗技術(shù)的優(yōu)點(diǎn)和目前藍(lán)牙設(shè)備的市場占有率,未來它將在可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)等領(lǐng)域獲得廣泛應(yīng)用。Android 4.3系統(tǒng)正式支持藍(lán)牙4.0,將加速低功耗藍(lán)牙的應(yīng)用進(jìn)程。針對在Android平臺開發(fā)低功耗藍(lán)牙應(yīng)用的開發(fā)文獻(xiàn)少,開發(fā)技術(shù)與傳統(tǒng)藍(lán)牙區(qū)別較大的情況,本文從應(yīng)用程序開發(fā)的角度出發(fā),從藍(lán)牙4.0低功耗技術(shù)協(xié)議棧、BLE程序分層結(jié)構(gòu)、關(guān)鍵技術(shù)和開發(fā)實(shí)例等方面對應(yīng)用程序開發(fā)進(jìn)行了闡述,根據(jù)運(yùn)行結(jié)果,該程序達(dá)到了設(shè)計(jì)要求。

      [1]錢志鴻,劉丹.藍(lán)牙技術(shù)數(shù)據(jù)傳輸綜述[J].通信學(xué)報(bào),2012,33(4):143-151.

      [2]高波,葛寧.低功耗藍(lán)牙個(gè)人健康網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn)[J].傳感器與微系統(tǒng),2013,32(6):84-87.

      [3]陳海金,張躍.遠(yuǎn)程多參數(shù)動(dòng)態(tài)實(shí)時(shí)監(jiān)護(hù)儀設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,12(33):4501-4508.

      [4]呂松棟,黎卓芳.藍(lán)牙4.0低功耗技術(shù)及其認(rèn)證要求[J].現(xiàn)代電信科學(xué),2011,10(10):17-20.

      [5]沈峰,李曉風(fēng).模式在主控機(jī)軟件中的應(yīng)用與研究[J].微計(jì)算機(jī)信息,2006,12(2):71-74.

      [6]基于Android健康服務(wù)終端藍(lán)牙傳輸軟件的設(shè)計(jì)[J].電子技術(shù),2012,25(5):115-118.

      猜你喜歡
      程序開發(fā)外設(shè)低功耗
      一種高速低功耗比較器設(shè)計(jì)
      APP應(yīng)用程序開發(fā)模式探究
      電子制作(2019年19期)2019-11-23 08:42:02
      基于TestStand的自動(dòng)檢測程序開發(fā)
      電子測試(2018年11期)2018-06-26 05:56:16
      基于嵌入式系統(tǒng)Windows CE的應(yīng)用程序開發(fā)
      基于App inventor 2手機(jī)程序開發(fā)過程的學(xué)習(xí)與實(shí)——以“喵喵定時(shí)器”APP開發(fā)為例
      電子制作(2017年1期)2017-05-17 03:54:08
      Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
      ADI推出三款超低功耗多通道ADC
      IDT針對下一代無線通信推出低功耗IQ調(diào)制器
      低功耗加權(quán)cache替換策略
      貼身呵護(hù) 必不可少的PSP外設(shè)
      广德县| 乡城县| 朝阳市| 泰来县| 宁波市| 鹤壁市| 鹰潭市| 河池市| 鹤壁市| 禄丰县| 屯门区| 新营市| 高唐县| 周至县| 潮州市| 邢台县| 浦县| 纳雍县| 长乐市| 潼南县| 乃东县| 镇安县| 佛坪县| 怀宁县| 阜新| 涟水县| 锦屏县| 千阳县| 正安县| 宜良县| 英吉沙县| 桂林市| 惠来县| 拜泉县| 麦盖提县| 安福县| 株洲县| 屏山县| 安仁县| 凤山市| 临洮县|