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

基于Android與BLE的藍(lán)牙通信系統(tǒng)的實(shí)現(xiàn)

2018-06-30 06:20:08萬(wàn)燕李麗麗
科技創(chuàng)新與應(yīng)用 2018年16期

萬(wàn)燕 李麗麗

摘 要:高科技電子行業(yè)的發(fā)展,引領(lǐng)了可穿戴設(shè)備的風(fēng)潮,人們?cè)桨l(fā)追求于其低功耗和穩(wěn)定性。文章實(shí)現(xiàn)了一個(gè)基于Android和BLE的藍(lán)牙通信系統(tǒng),除了能通過(guò)藍(lán)牙連接Android手機(jī)進(jìn)行通信以及強(qiáng)大的低耗能優(yōu)勢(shì)以外,還對(duì)BLE連接流程進(jìn)行了優(yōu)化,提高了硬件和軟件之間的藍(lán)牙通信性能。

關(guān)鍵詞:BLE;Android;藍(lán)牙通信

中圖分類號(hào):TN925 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2018)16-0015-03

Abstract: The development of high-tech electronic industry leads the trend of wearable devices, and people increasingly pursue its low power consumption and stability. In this paper, a Bluetooth communication system based on Android and BLE is implemented. In addition to being able to communicate with Android mobile phone through Bluetooth and powerful low energy consumption advantage, the flow of BLE connection is optimized, improving Bluetooth communication performance between hardware and software.

Keywords: BLE; Android; Bluetooth communication

引言

自從“可穿戴設(shè)備”這個(gè)名詞進(jìn)入人們的視線,越來(lái)越多的消費(fèi)者愿意去嘗試這項(xiàng)新技術(shù),在巨大利益的推動(dòng)下,對(duì)可穿戴設(shè)備的研究也如火如荼地展開。目前可穿戴設(shè)備的技術(shù)還不夠成熟,功能強(qiáng)大的設(shè)備無(wú)法獨(dú)立使用,很多功能需要配合手機(jī)軟件才能夠完成,因此設(shè)備與App之間的通信成為人們重點(diǎn)關(guān)注的對(duì)象。目前,大多數(shù)的可穿戴設(shè)備和App的通信都是使用藍(lán)牙作為數(shù)據(jù)傳輸方式,而Android系統(tǒng)亦是目前手機(jī)最流行的操作系統(tǒng),故本文開發(fā)了一個(gè)基于Android的藍(lán)牙通信系統(tǒng)。

藍(lán)牙分為低功耗藍(lán)牙和經(jīng)典藍(lán)牙,低功耗藍(lán)牙,即BLE,對(duì)應(yīng)的是藍(lán)牙4.0及以上版本。經(jīng)典藍(lán)牙又分為傳統(tǒng)藍(lán)牙和高速藍(lán)牙,高速藍(lán)牙指的是3.0版本,藍(lán)牙3.0以下版本屬于傳統(tǒng)藍(lán)牙[1]。低功耗藍(lán)牙與經(jīng)典藍(lán)牙相比,它的通信距離從10米擴(kuò)展到100米,發(fā)送數(shù)據(jù)所需的時(shí)間也從100ms降至3ms,相應(yīng)延時(shí)也從100ms降至6ms。雖然數(shù)據(jù)傳輸速率還無(wú)法與高速藍(lán)牙相比,但在耗能方面,極大體現(xiàn)了低功耗藍(lán)牙的價(jià)值,能夠以極低的運(yùn)行和待機(jī)功耗使一粒紐扣電池連續(xù)工作數(shù)年之久,此外,它還有低成本和跨廠商的互操作性[2],所以低功耗藍(lán)牙將是可穿戴設(shè)備更好的選擇。數(shù)據(jù)同步成功率是設(shè)備與App之間藍(lán)牙通信性能的一大體現(xiàn),很多網(wǎng)絡(luò)上的Android App與各種設(shè)備的數(shù)據(jù)同步成功率不到80%,如何提高設(shè)備和App之間的藍(lán)牙通信性能,也是BLE應(yīng)用開發(fā)者關(guān)注的重點(diǎn)。

BLE在待機(jī)功耗和運(yùn)行功耗上的特點(diǎn)符合當(dāng)今可穿戴設(shè)備的發(fā)展需求,在未來(lái)一段時(shí)間,它將占據(jù)可穿戴設(shè)備通信的主流市場(chǎng)。本系統(tǒng)基于Android 4.3以上版本,利用Android SDK提供的BLE相關(guān)API進(jìn)行藍(lán)牙通信系統(tǒng)的開發(fā),此系統(tǒng)能夠適配任意基于BLE的可穿戴設(shè)備,為可穿戴設(shè)備提供一種更經(jīng)濟(jì)的藍(lán)牙通信方案。在低耗能的基礎(chǔ)上,對(duì)目前BLE相關(guān)應(yīng)用數(shù)據(jù)同步成功率低的因素進(jìn)行分析,優(yōu)化BLE的連接流程,將App與設(shè)備的數(shù)據(jù)同步成功率提升至90%以上,提高藍(lán)牙通信性能。

1 系統(tǒng)設(shè)計(jì)

1.1 設(shè)計(jì)方案

本文所實(shí)現(xiàn)的是基于Android和BLE的藍(lán)牙通信系統(tǒng),開發(fā)工具采用Android studio。BLE的通信功能主要利用了Android SDK中關(guān)于BLE的API,這些接口只存在于API 18及以上版本,限制了裝載本系統(tǒng)的手機(jī)設(shè)備操作系統(tǒng)至少為Android 4.3版本[3]。由于Android操作系統(tǒng)的內(nèi)核是基于Linux系統(tǒng)的,且主要使用Java作為開發(fā)語(yǔ)言[4],所以本系統(tǒng)采用Java語(yǔ)言進(jìn)行各項(xiàng)功能的開發(fā),用以控制系統(tǒng)的邏輯部分,界面部分使用XML文件進(jìn)行布局,界面與邏輯分開的開發(fā)方式有助于各個(gè)部分的維護(hù)。

1.2 系統(tǒng)設(shè)計(jì)

藍(lán)牙通信系統(tǒng)主要有四大功能,分別是設(shè)備搜索、設(shè)備連接、收發(fā)數(shù)據(jù)、保存數(shù)據(jù)。設(shè)備的搜索、連接以及收發(fā)數(shù)據(jù)功能主要依賴于系統(tǒng)藍(lán)牙部分的開發(fā),保存數(shù)據(jù)功能主要依靠存儲(chǔ)設(shè)備的文件讀寫,后者的開發(fā)目的是用于測(cè)試藍(lán)牙通信系統(tǒng)數(shù)據(jù)傳輸?shù)恼_性。

系統(tǒng)主要功能如圖1所示。

2 系統(tǒng)實(shí)現(xiàn)與優(yōu)化

2.1 系統(tǒng)實(shí)現(xiàn)

藍(lán)牙傳輸系統(tǒng)最關(guān)鍵的部分,就是實(shí)現(xiàn)BLE通信功能。BLE通信和傳統(tǒng)藍(lán)牙通信的實(shí)現(xiàn)原理相同,即一個(gè)藍(lán)牙主設(shè)備通過(guò)使用藍(lán)牙芯片使設(shè)備能夠在近距離內(nèi)發(fā)送接收無(wú)線電信號(hào),來(lái)找到另一個(gè)藍(lán)牙從設(shè)備[5]。但在開發(fā)方式上,兩者卻存在很大不同。在傳統(tǒng)藍(lán)牙中,手機(jī)和BLE設(shè)備分別對(duì)應(yīng)兩種角色,一個(gè)是客戶端,一個(gè)是服務(wù)器端。當(dāng)客戶端搜索并匹配到服務(wù)器端以后通過(guò)UUID建立Socket,之后才能進(jìn)行網(wǎng)絡(luò)通信。而UUID這個(gè)值,在傳統(tǒng)藍(lán)牙中是唯一的,且服務(wù)器端和客戶端必須保持一致。在BLE中,手機(jī)和BLE設(shè)備分別對(duì)應(yīng)為中心設(shè)備和外圍設(shè)備[6]。開發(fā)BLE應(yīng)用主要使用了GATT,GATT指的是藍(lán)牙4.0最上層的應(yīng)用框架,它提供了藍(lán)牙設(shè)備間交互的各種接口,所有BLE應(yīng)用都是基于GATT實(shí)現(xiàn)的。每個(gè)BLE設(shè)備都有多個(gè)Service,每個(gè)Service含有多個(gè)Characteris,每個(gè)Characteris擁有一個(gè)value和多個(gè)descriptor,而中心設(shè)備和外圍設(shè)備的通信就是依靠Characteris進(jìn)行的。不管是Service、Characteris還是descriptor,都擁有各自唯一的UUID。

開發(fā)時(shí),若想要系統(tǒng)能夠使用藍(lán)牙的功能,首先需要在配置文件中聲明藍(lán)牙的權(quán)限,允許程序發(fā)現(xiàn)和配對(duì)藍(lán)牙設(shè)備以及允許程序連接到已配對(duì)的藍(lán)牙設(shè)備。藍(lán)牙的開啟方式有兩種:一是發(fā)送藍(lán)牙開啟的請(qǐng)求,由用戶自己選擇是否打開;二是代碼后臺(tái)自動(dòng)打開藍(lán)牙。本系統(tǒng)采用的是前者,先獲取本地藍(lán)牙適配器,判斷手機(jī)藍(lán)牙是否已開啟,若未開啟則進(jìn)行詢問(wèn),當(dāng)用戶選擇確定時(shí),再?gòu)暮笈_(tái)去啟動(dòng)藍(lán)牙。

藍(lán)牙成功開啟后就可以搜索設(shè)備了,外圍設(shè)備啟動(dòng)后會(huì)不斷發(fā)送廣播消息,中心設(shè)備使用注冊(cè)的廣播接收器捕捉外圍設(shè)備發(fā)送的這些廣播消息,然后廣播接收器會(huì)將設(shè)備地址回調(diào)給中心設(shè)備。值得注意的是,需要給搜索設(shè)備這個(gè)行為設(shè)定一個(gè)終止條件,比如限定搜索時(shí)間或者搜索到設(shè)備的數(shù)量,否則搜索將不會(huì)停止,占用系統(tǒng)大量的資源,增加系統(tǒng)耗能。之后可以定義一個(gè)設(shè)備適配器的類,用于存儲(chǔ)搜索到的藍(lán)牙設(shè)備,并將之展現(xiàn)在界面上,供用戶進(jìn)行選擇。當(dāng)用戶選定一個(gè)設(shè)備后,進(jìn)行設(shè)備的配對(duì)和連接。BLE API中提供了連接設(shè)備的方法,可以直接進(jìn)行調(diào)用。

當(dāng)連接到BLE設(shè)備后,調(diào)用發(fā)現(xiàn)Service的函數(shù),通過(guò)SERVICE_UUID獲取目標(biāo)Service。如果Service不為空,再通過(guò)CHARACTERISTIC_UUID獲取Characteris,使用Characteris與BLE設(shè)備進(jìn)行通信。如果BLE設(shè)備的Service和Characteris的UUID值未知,可以先獲取設(shè)備所有的Service,然后再一個(gè)個(gè)嘗試,獲取最終需要的Service,同理,可獲得最終需要的Characteris。在BLE通信中,接收數(shù)據(jù)的模式分為兩種,一種是主動(dòng)讀取數(shù)據(jù),一種是使用通知的方式。主動(dòng)讀取數(shù)據(jù)由中心設(shè)備控制讀取數(shù)據(jù)的時(shí)機(jī);而使用通知的方式,讀取數(shù)據(jù)的時(shí)機(jī)則是由外圍設(shè)備掌控,即只有當(dāng)Characteris中數(shù)據(jù)有所變化,中心設(shè)備才會(huì)去讀取新數(shù)據(jù)。若中心設(shè)備需要發(fā)送數(shù)據(jù),則應(yīng)先把數(shù)據(jù)寫入Characteris,然后再將其傳輸給外圍設(shè)備。

數(shù)據(jù)保存功能使用了File類和FileWriter類,這些是Java本身提供的類,用于文件和數(shù)據(jù)的讀寫。因?yàn)镃haracteris中數(shù)據(jù)格式是byte數(shù)組,當(dāng)系統(tǒng)接收到新數(shù)據(jù)之后,需要先對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,然后在系統(tǒng)的根目錄下獲取指定文本文件。若文件不存在,則創(chuàng)建文件并寫入數(shù)據(jù);若文件存在,則將新數(shù)據(jù)添加到文件末尾,以便查看數(shù)據(jù)接收記錄。

藍(lán)牙通信系統(tǒng)的工作流程圖如下圖2所示。

圖2 系統(tǒng)工作流程圖

2.2 BLE連接流程優(yōu)化

相比于IOS手機(jī)App和其他設(shè)備的同步成功率,Android App與其他設(shè)備的同步成功率偏低,經(jīng)過(guò)對(duì)數(shù)據(jù)同步失敗情況的代碼跟蹤,發(fā)現(xiàn)大部分同步失敗的原因是藍(lán)牙連接失敗。也就是說(shuō),很多情況下的數(shù)據(jù)同步失敗,是因?yàn)樗{(lán)牙連接斷開而重連失敗導(dǎo)致的。在分析了Android BLE的API實(shí)現(xiàn)代碼以后,發(fā)現(xiàn)開發(fā)BLE應(yīng)用的時(shí)候,針對(duì)不同設(shè)備類型,開發(fā)者應(yīng)該對(duì)重連函數(shù)的邏輯考慮得更全面才能提升數(shù)據(jù)同步成功率。

按照Android BLE的接口文檔說(shuō)明來(lái)看,在獲取設(shè)備以后調(diào)用連接方法會(huì)返回一個(gè)BluetoothGatt,之后這個(gè)連接上的所有操作都在這個(gè)BluetoothGatt上執(zhí)行,包括連接狀態(tài)的變化、關(guān)閉連接、讀寫數(shù)據(jù)等等。官方給的重連函數(shù)例子是在連接失敗以后直接繼續(xù)調(diào)用連接函數(shù)去重新連接,但是實(shí)際上,這樣的重連函數(shù)很少會(huì)起到應(yīng)有的效果。BluetoothGatt在有異常發(fā)生以后,有很大可能性會(huì)關(guān)閉一端的連接,如果此時(shí)啟用舊的BluetoothGatt就會(huì)導(dǎo)致連接失敗,最優(yōu)的方式是使用一個(gè)全新的BluetoothGatt。但是,什么時(shí)候重啟一個(gè)新的BluetoothGatt,連接失敗以后重啟多少次合適,這就需要根據(jù)不同設(shè)備的不同需求來(lái)分析了。

在代碼上,連接失敗分兩種,一種是返回超時(shí),一種是返回錯(cuò)誤結(jié)果。考慮到連接延時(shí)的情況,關(guān)閉舊連接和建立新連接之間也需要增加一個(gè)合適的時(shí)間間隔。所以,可以為重連函數(shù)設(shè)置四個(gè)參數(shù),分別是總的運(yùn)行時(shí)間、重試次數(shù)、單次超時(shí)時(shí)限以及重建連接間隔。代碼流程如圖3所示,在總的運(yùn)行時(shí)間中返回錯(cuò)誤結(jié)果或者等待結(jié)果超時(shí),則等待連接延時(shí)之后重啟一個(gè)BluetoothGatt進(jìn)行連接。

3 系統(tǒng)測(cè)試

為了驗(yàn)證藍(lán)牙通信系統(tǒng)是否達(dá)到預(yù)期目標(biāo),需進(jìn)行系統(tǒng)測(cè)試。測(cè)試分為兩部分,一是功能測(cè)試,二是性能測(cè)試。

3.1 功能測(cè)試

啟動(dòng)多個(gè)BLE設(shè)備,將APK文件傳送至Android手機(jī),安裝完成之后打開軟件。開啟藍(lán)牙以后搜索可用設(shè)備,所有BLE設(shè)備均被搜索到,故設(shè)備搜索功能可用;選定不同BLE設(shè)備進(jìn)行配對(duì)連接,均連接成功, 故設(shè)備連接功能可用;由多個(gè)BLE設(shè)備連續(xù)發(fā)送二十組不同大小的數(shù)據(jù)塊,范圍從1字節(jié)到100字節(jié),發(fā)送完畢后打開手機(jī)根據(jù)目錄下的指定文本文件進(jìn)行驗(yàn)證,得出以下結(jié)論:數(shù)據(jù)塊大小在20字節(jié)以內(nèi)的數(shù)據(jù)傳輸丟包率為零,數(shù)據(jù)準(zhǔn)確無(wú)誤;數(shù)據(jù)塊大小在20字節(jié)以上的數(shù)據(jù),數(shù)據(jù)塊中大于20字節(jié)以后的數(shù)據(jù)全部丟失,20字節(jié)以內(nèi)的數(shù)據(jù)準(zhǔn)確無(wú)誤。通過(guò)翻閱API文檔,可知這是由于GATT做出的限制,故收發(fā)數(shù)據(jù)功能和數(shù)據(jù)保存功能可用。

3.2 性能測(cè)試

控制BLE設(shè)備不間斷發(fā)送數(shù)據(jù),攜帶裝載藍(lán)牙通信系統(tǒng)的手機(jī)遠(yuǎn)離BLE設(shè)備走動(dòng)。經(jīng)測(cè)試,在距離數(shù)據(jù)源10米半徑范圍內(nèi)行走不影響數(shù)據(jù)的接收,藍(lán)牙信號(hào)可穿透墻壁木門等障礙物而不丟包,可知此藍(lán)牙通信系統(tǒng)有效通信距離長(zhǎng)、連接穩(wěn)定性強(qiáng)。在等量數(shù)據(jù)傳輸下,此藍(lán)牙通信系統(tǒng)相較于基于經(jīng)典藍(lán)牙的通信系統(tǒng)耗能大大降低,前者只消耗了后者不到一半的電量,可知此藍(lán)牙通信系統(tǒng)低耗能優(yōu)勢(shì)顯著。在進(jìn)行BLE連接流程優(yōu)化之前,官方的重連函數(shù)成功率不到10%,使用優(yōu)化后的重連函數(shù),成功率提升至90%以上,從而間接提升了數(shù)據(jù)同步成功率,提高了系統(tǒng)的藍(lán)牙通信性能。

4 結(jié)束語(yǔ)

本文實(shí)現(xiàn)了一個(gè)基于Android平臺(tái)與BLE的藍(lán)牙通信系統(tǒng),能夠連接手機(jī)和BLE設(shè)備進(jìn)行通信,對(duì)BLE的連接流程進(jìn)行了優(yōu)化,提高了藍(lán)牙通信性能。經(jīng)測(cè)試,該系統(tǒng)可用于連接任意BLE設(shè)備,在10米范圍內(nèi)通過(guò)藍(lán)牙收發(fā)數(shù)據(jù)無(wú)丟包情況,比傳統(tǒng)藍(lán)牙通信更省電,數(shù)據(jù)同步成功率更高,為可穿戴設(shè)備提供一種更可靠、更穩(wěn)定、更經(jīng)濟(jì)的藍(lán)牙通信方案。

參考文獻(xiàn):

[1]Shaikh Shahriar Hassan,Soumik Das Bibon,Md Shohrab Hossain,Mohammed Atiquzzaman. Security threats in Bluetooth technology[J]. Computers & Security,2017.

[2]陳冬云.淺談藍(lán)牙4.0“助力”物聯(lián)網(wǎng)的發(fā)展[J].教師,2014(17):126.

[3]歐陽(yáng)駿,陳子龍,黃寧淋.藍(lán)牙4.0BLE 開發(fā)完全手冊(cè):物聯(lián)網(wǎng)開發(fā)技術(shù)實(shí)戰(zhàn)[M].北京:化學(xué)工業(yè)出版社,2013.

[4] 歐陽(yáng)零.Android 核心技術(shù)與實(shí)例詳解(第2版)[M].北京:電子工業(yè)出版社,2013.

[5]羅富財(cái). 基于Android平臺(tái)的藍(lán)牙通信系統(tǒng)的研究與實(shí)現(xiàn)[D].華北電力大學(xué),2013.

[6]熊小軍,萬(wàn)輝勇,陳泓屹.基于Android的低功耗藍(lán)牙通訊研究與實(shí)現(xiàn)[J].科技廣場(chǎng),2015(07):122-127.

[7]熊獅,吳效明.基于Android系統(tǒng)的生理數(shù)據(jù)藍(lán)牙傳輸技術(shù)[J].中國(guó)醫(yī)學(xué)物理學(xué)雜志,2012,29(06):3801-3803.

主站蜘蛛池模板: 亚洲第一页在线观看| 色综合激情网| 国产亚洲高清在线精品99| 亚洲中文精品久久久久久不卡| 激情视频综合网| 久99久热只有精品国产15| 综1合AV在线播放| 黄色在线不卡| 亚洲视频在线观看免费视频| 91小视频在线观看| 自拍亚洲欧美精品| 午夜啪啪福利| 99无码中文字幕视频| 波多野结衣二区| 欧美一区日韩一区中文字幕页| 亚洲精品男人天堂| a欧美在线| 99精品欧美一区| 欧美五月婷婷| 欧美午夜视频| 性色一区| 伊人五月丁香综合AⅤ| 18禁不卡免费网站| 亚洲精选高清无码| 亚洲精品动漫| 精品无码人妻一区二区| 亚洲综合久久成人AV| 成人国产精品网站在线看| 日韩一级毛一欧美一国产| 国产综合精品一区二区| 成人午夜在线播放| 无码高潮喷水专区久久| 国产亚洲欧美日本一二三本道| 制服丝袜在线视频香蕉| 国产精品尹人在线观看| 久久香蕉国产线看观| 国产欧美日本在线观看| 国产精品尤物在线| 国产欧美日韩综合在线第一| 999精品在线视频| 99re热精品视频国产免费| 制服丝袜一区| 国产国拍精品视频免费看| 亚洲欧美日本国产综合在线| 91小视频在线观看免费版高清| 国产剧情无码视频在线观看| 亚洲天堂福利视频| 国产成人精品视频一区视频二区| 日本一区二区三区精品国产| 国产日韩欧美视频| 亚洲综合精品香蕉久久网| 91亚瑟视频| 日本国产在线| 国产一区成人| 色噜噜狠狠色综合网图区| 亚洲免费三区| 无码中文AⅤ在线观看| 69视频国产| 国产精品七七在线播放| 午夜国产大片免费观看| 女人18毛片水真多国产| 青青操视频在线| 久久精品人人做人人爽电影蜜月| 国产成人区在线观看视频| 欧美日韩国产精品va| 亚洲国产黄色| 亚洲小视频网站| 丁香亚洲综合五月天婷婷| 久久综合色播五月男人的天堂| 伊人久久久久久久久久| 亚洲 欧美 日韩综合一区| 亚洲精品国产自在现线最新| 久久国产精品无码hdav| 毛片网站在线看| 亚洲伊人天堂| 毛片视频网| 日韩无码黄色| 噜噜噜久久| 中文字幕久久亚洲一区| 久久精品无码专区免费| 成年人国产视频| 无码一区中文字幕|