0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用安卓APP來調(diào)試藍(lán)牙

藍(lán)牙技術(shù)聯(lián)盟 ? 來源:xx ? 2019-08-10 09:08 ? 次閱讀

隨著物聯(lián)網(wǎng)和互聯(lián)設(shè)備市場(chǎng)的快速增長(zhǎng),Google Play中也出現(xiàn)了越來越多采用藍(lán)牙(Bluetooth)的創(chuàng)新應(yīng)用。越來越多的團(tuán)隊(duì)也開始加入創(chuàng)建安卓藍(lán)牙應(yīng)用的大軍,對(duì)于開發(fā)者來說,有關(guān)藍(lán)牙協(xié)議棧和API的一些基礎(chǔ)知識(shí)至關(guān)重要,今天小編就帶大家一探究竟!

了解SDK 和協(xié)議棧(Stack)

只需要幾行調(diào)用高級(jí)API的代碼,你就能通過藍(lán)牙迅速掃描并連接目標(biāo)設(shè)備。若想了解如何在APP中采用低功耗藍(lán)牙技術(shù),或只是想創(chuàng)建樣板文件框架代碼,都可以點(diǎn)擊訪問應(yīng)用加速器套件(App Accelerator Kit)頁(yè)面。

要想讓APP的性能更上一層樓,很有必要先了解一下安卓開發(fā)中的藍(lán)牙API。自從安卓4.3版本(JELLY_BEAN_MR2API Level: 18)中引入了低功耗藍(lán)牙技術(shù)(BluetoothLow EnergyTechnology)的特性以來,面向安卓的SDK和藍(lán)牙協(xié)議棧就在不斷演進(jìn)。

從安卓5.0開始(APILevel: 21),添加了新的android.bluetooth.le數(shù)據(jù)包。對(duì)于有些藍(lán)牙操作,可能有多種實(shí)現(xiàn)方式。因此,你需要確認(rèn)用戶操作系統(tǒng)版本和API等級(jí),以更好地了解藍(lán)牙SDK的功能。

不同手機(jī)上的藍(lán)牙功能和特性也有可能不同。以BluetoothLeAdvertiser類為例,并不是所有的手機(jī)都支持”HAL-enabledfeatures”特性,開發(fā)者需要特別調(diào)用函數(shù)BluetoothAdapter.isMultipleAdvertisementSupported(),以確認(rèn)其在當(dāng)前設(shè)備上是否支持。

在開發(fā)者選項(xiàng)中,可以使能藍(lán)牙HCI日志,這是一個(gè)非常有用的工具--“HCI信息收集日志(HCI snoop log)”(4.4以上版本)。


它在協(xié)議棧中就像個(gè)鉤子,能夠捕捉到所有的HCI數(shù)據(jù)包并將其寫入到一個(gè)文件當(dāng)中。大部分安卓設(shè)備的日志文件位于/sdcard/btsnoop_hci.log。可以通過這篇文章詳細(xì)了解如何設(shè)置工具并檢索信息。

同時(shí),第三方的調(diào)試工具,例如北歐半導(dǎo)體(Nordic Semiconductor)提供的一款面向安卓的工具--“nRF Master Control Panel”,其與在iOS使用的“LightBlue”非常類似。這款A(yù)PP能作為GAP/GATT客戶端為開發(fā)者獲取很多信息。它還能模擬安卓GATT服務(wù)器。更強(qiáng)的是,它還能顯示通信范圍內(nèi)廣播的實(shí)時(shí)RSSI圖形。這一工具可在Google Play中獲取。


了解連接間隔(Connection Interval)

藍(lán)牙連接間隔是APP的一組重要參數(shù)。為了平衡功耗和性能,你需要針對(duì)特定用例進(jìn)行參數(shù)微調(diào)。

在 GAP (通用訪問配置文件)層,外圍設(shè)備發(fā)出廣播,中央設(shè)備來接收。然后中央設(shè)備發(fā)起連接,外圍設(shè)備接受連接請(qǐng)求。當(dāng)中央設(shè)備發(fā)起藍(lán)牙連接時(shí),會(huì)發(fā)出包含一系列連接參數(shù)的連接請(qǐng)求(connect_req)。

連接間隔(Connection interval)

從設(shè)備延遲(Slavelatency)

管理超時(shí)(Managementtimeout)

在初始請(qǐng)求中,連接間隔應(yīng)設(shè)為initial_conn-interval,從設(shè)備延遲為零。安卓設(shè)備上的initial_conn_interval(連接建立時(shí)的連接間歇初始值)設(shè)置為7.5ms,這是規(guī)格所允許的最小值。在 7.5ms的間隔下,我們能夠獲取最高的吞吐量,但這也非常耗電(越小的間隔意味著越頻繁的連接事件,進(jìn)而傳輸更多數(shù)據(jù),相應(yīng)地就會(huì)造成更高功耗)。當(dāng)連接建立、中央設(shè)備端的發(fā)起連接活動(dòng)完成后,中央設(shè)備或外圍設(shè)備就能發(fā)出連接參數(shù)更新的請(qǐng)求。這一請(qǐng)求是希望對(duì)方設(shè)備采納的參數(shù)建議。對(duì)方接受建議之后,中央設(shè)備就會(huì)開始進(jìn)行連接參數(shù)更新過程。安卓的這一過程是在BluetoothGatt類中實(shí)施的。需調(diào)用requestConnectionPriority方法更新連接參數(shù)。目前在API Level23中,更新方法支持三組參數(shù):

CONNECTION_PRIORITY_BALANCED

CONNECTION_PRIORITY_HIGH

CONNECTION_PRIORITY_LOW

進(jìn)程如下:


目標(biāo)設(shè)備也可能會(huì)向安卓發(fā)送連接參數(shù)更新請(qǐng)求,希望按照自己的偏好改變間隔。但間隔設(shè)定的最終決定權(quán)還是在主設(shè)備(在鏈路層發(fā)起連接的設(shè)備)。

了解數(shù)據(jù)包(Packet)和流程(Procedure)

藍(lán)牙開發(fā)可用的另一個(gè)強(qiáng)有力的工具就是協(xié)議分析器(protocol analyzer),也就是嗅探器(the sniffer)。本文中我用的是ComProbe BPA低功耗藍(lán)牙協(xié)議分析器,通過它我可以輕松地了解無線通訊情況或判斷問題所在。

當(dāng)我不確定安卓協(xié)議棧和API傳遞的數(shù)據(jù)是否正確時(shí),就會(huì)啟動(dòng)分析器,檢查不同層的細(xì)節(jié)。下面的截圖就顯示了 “Read by type”運(yùn)行的細(xì)節(jié)。我還可以轉(zhuǎn)到 “Handle value pair”,針對(duì)其逐步進(jìn)行調(diào)試。


調(diào)試隱藏活動(dòng)(Invisible Activity)或后臺(tái)服務(wù)(Background Service)

APP不會(huì)一直在前臺(tái)運(yùn)行。任何更高優(yōu)先級(jí)的任務(wù)都可能將你的藍(lán)牙應(yīng)用轉(zhuǎn)變?yōu)椴豢梢娔J?。有時(shí)藍(lán)牙運(yùn)行的實(shí)施是在后臺(tái)的服務(wù)中。多數(shù)情況下,藍(lán)牙不在前臺(tái)時(shí),運(yùn)行可能會(huì)有所不同。在后臺(tái)或服務(wù)中的運(yùn)行場(chǎng)景需經(jīng)過測(cè)試和認(rèn)證。幾乎所有的安卓調(diào)試器都支持一項(xiàng)特性,那就是附加至某一特定進(jìn)程。你只需要找到APP的進(jìn)程ID,將調(diào)試器附加到這一特定進(jìn)程即可。


自從安卓開始支持低功耗藍(lán)牙以來,每一次版本更新都包括了藍(lán)牙協(xié)議棧和API的改進(jìn)。再加上易于開發(fā)者采用的API和工具,安卓正逐漸成為物聯(lián)網(wǎng)生態(tài)系統(tǒng)中最強(qiáng)有力的平臺(tái)。期待不久的將來能夠看到更多創(chuàng)新的安卓應(yīng)用。

本篇作者為:藍(lán)牙技術(shù)聯(lián)盟技術(shù)項(xiàng)目經(jīng)理 高文森先生

原文標(biāo)題:如何利用安卓APP調(diào)試藍(lán)牙

文章出處:【微信公眾號(hào):藍(lán)牙技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    114

    文章

    5751

    瀏覽量

    169590
  • 安卓
    +關(guān)注

    關(guān)注

    5

    文章

    2116

    瀏覽量

    56959
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    手機(jī)的藍(lán)牙

    手機(jī)的藍(lán)牙與外部透明串口藍(lán)牙怎么不能連接識(shí)別啊。 有的說三星手機(jī)的可以識(shí)別,那其他的手機(jī)就不能嗎? 有的說藍(lán)牙協(xié)議不支持,到底是升級(jí)串口
    發(fā)表于 09-02 17:01

    藍(lán)牙4.1】app安裝失敗

    ` 本帖最后由 770781327 于 2015-6-30 21:28 編輯 大家有沒有用到手機(jī)端的app呢,我是手機(jī),官網(wǎng)提供的這app貌似無法安裝呀,我都換了四家的
    發(fā)表于 06-30 21:27

    求教一個(gè)問題,stm32,手機(jī),藍(lán)牙串口

    如果手機(jī)通過藍(lán)牙串口發(fā)送數(shù)據(jù)給32,可以通過中斷,如果32通過藍(lán)牙發(fā)送數(shù)據(jù)給手機(jī),應(yīng)該怎樣做??難道在APP里寫一個(gè)不斷接受數(shù)據(jù)流的語句
    發(fā)表于 07-16 14:46

    求教,stm32,手機(jī),藍(lán)牙串口

    如果手機(jī)通過藍(lán)牙串口發(fā)送數(shù)據(jù)給32,可以通過中斷,如果32通過藍(lán)牙發(fā)送數(shù)據(jù)給手機(jī),應(yīng)該怎樣做??難道在APP里寫一個(gè)不斷接受數(shù)據(jù)流的語句
    發(fā)表于 07-17 13:38

    【云智易試用體驗(yàn)】APP demo編譯與運(yùn)行

    的XLINK_SDK_Android_Demo.zip解壓),導(dǎo)入后如上圖,發(fā)現(xiàn)有幾個(gè)錯(cuò)誤。然后點(diǎn)工程的屬性,選擇一下的SDK,我這里是4.3.0, 勾選后錯(cuò)誤消失。下面打開
    發(fā)表于 09-05 21:59

    手機(jī)APP通過藍(lán)牙不能連接上stm32中的單片機(jī)中的藍(lán)牙模塊

    手機(jī)APP通過藍(lán)牙連接不上stm32單片機(jī)中的藍(lán)牙模塊,之前是自己寫的APP發(fā)現(xiàn)連接不上,后
    發(fā)表于 04-27 22:58

    藍(lán)牙模塊調(diào)試連不上電腦

    最近在做藍(lán)牙模塊的測(cè)試,用的是SIM800C,淘寶買的模塊。使用串口配置沒有問題,但是藍(lán)牙功能還沒調(diào)試。電腦有藍(lán)牙功能,但是直接連模塊發(fā)現(xiàn)連不上。蘋果的商店里沒找到
    發(fā)表于 04-29 23:13

    請(qǐng)問在平臺(tái)下TI有沒有提供OAD調(diào)試工具?

    請(qǐng)教。在平臺(tái)下TI有沒有提供OAD調(diào)試工具?目前情況是,我們自己做了一個(gè)藍(lán)牙板,板上OAD已經(jīng)調(diào)試完畢可以升級(jí),手機(jī)端支持IOS和
    發(fā)表于 09-27 12:58

    手機(jī)與藍(lán)牙模塊聯(lián)合調(diào)試—— 單片機(jī)藍(lán)牙控制LED燈亮滅(上)

    系列博文:(1)手機(jī)與藍(lán)牙模塊聯(lián)合調(diào)試(一)——藍(lán)牙模塊的串口通訊 (2)
    發(fā)表于 07-01 07:36

    如何利用App inventor編寫app控制ESP8266?

    如何利用App inventor編寫app控制ESP8266?
    發(fā)表于 02-11 07:04

    編程藍(lán)牙軟件

    想編程軟件 控制藍(lán)牙? 零基礎(chǔ)? 要學(xué)習(xí)哪個(gè)編程軟件
    發(fā)表于 12-17 16:01 ?573次閱讀

    系統(tǒng)藍(lán)牙調(diào)試助手工具源代碼下載

    系統(tǒng)藍(lán)牙調(diào)試助手工具源代碼下載
    發(fā)表于 07-12 10:35 ?8次下載

    基于單片機(jī)手機(jī)無線藍(lán)牙APP的閃電算答題系統(tǒng)

    基于單片機(jī)手機(jī)無線藍(lán)牙APP的閃電算答題系統(tǒng)
    發(fā)表于 11-26 20:21 ?19次下載
    基于單片機(jī)<b class='flag-5'>安</b><b class='flag-5'>卓</b>手機(jī)無線<b class='flag-5'>藍(lán)牙</b><b class='flag-5'>APP</b>的閃電算答題系統(tǒng)

    Arduino/Android藍(lán)牙伺服電機(jī)控制APP

    電子發(fā)燒友網(wǎng)站提供《Arduino/Android藍(lán)牙伺服電機(jī)控制APP.zip》資料免費(fèi)下載
    發(fā)表于 12-05 09:14 ?4次下載
    Arduino/Android<b class='flag-5'>藍(lán)牙</b>伺服電機(jī)控制<b class='flag-5'>安</b><b class='flag-5'>卓</b><b class='flag-5'>APP</b>

    云視角APP更新通知

    我司于2021年12月23日更新發(fā)布了云視角APP,用戶可通過手機(jī)應(yīng)用寶軟件自行下載更新。由于我司產(chǎn)品的豐富,功能不斷優(yōu)化,我司于今
    的頭像 發(fā)表于 03-31 09:47 ?521次閱讀
    云視角<b class='flag-5'>安</b><b class='flag-5'>卓</b><b class='flag-5'>APP</b>更新通知