如何利用安卓APP來調試藍牙

2020-12-20 電子發燒友

隨著物聯網和互聯設備市場的快速增長,Google Play中也出現了越來越多採用藍牙(Bluetooth)的創新應用。越來越多的團隊也開始加入創建安卓藍牙應用的大軍,對於開發者來說,有關藍牙協議棧和API的一些基礎知識至關重要,今天小編就帶大家一探究竟!

了解SDK 和協議棧(Stack)

只需要幾行調用高級API的代碼,你就能通過藍牙迅速掃描並連接目標設備。若想了解如何在APP中採用低功耗藍牙技術,或只是想創建樣板文件框架代碼,都可以點擊訪問應用加速器套件(App Accelerator Kit)頁面。

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

從安卓5.0開始(APILevel: 21),添加了新的android.bluetooth.le數據包。對於有些藍牙操作,可能有多種實現方式。因此,你需要確認用戶作業系統版本和API等級,以更好地了解藍牙SDK的功能。

不同手機上的藍牙功能和特性也有可能不同。以BluetoothLeAdvertiser類為例,並不是所有的手機都支持」HAL-enabledfeatures」特性,開發者需要特別調用函數BluetoothAdapter.isMultipleAdvertisementSupported(),以確認其在當前設備上是否支持。

在開發者選項中,可以使能藍牙HCI日誌,這是一個非常有用的工具--「HCI信息收集日誌(HCI snoop log)」(4.4以上版本)。


它在協議棧中就像個鉤子,能夠捕捉到所有的HCI數據包並將其寫入到一個文件當中。大部分安卓設備的日誌文件位於/sdcard/btsnoop_hci.log。可以通過這篇文章詳細了解如何設置工具並檢索信息。 

同時,第三方的調試工具,例如北歐半導體(Nordic     Semiconductor)提供的一款面向安卓的工具--「nRF Master Control Panel」,其與在iOS使用的「LightBlue」非常類似。這款APP能作為GAP/GATT客戶端為開發者獲取很多信息。它還能模擬安卓GATT伺服器。更強的是,它還能顯示通信範圍內廣播的實時RSSI圖形。這一工具可在Google Play中獲取。


了解連接間隔(Connection Interval)

藍牙連接間隔是APP的一組重要參數。為了平衡功耗和性能,你需要針對特定用例進行參數微調。

在 GAP (通用訪問配置文件)層,外圍設備發出廣播,中央設備來接收。然後中央設備發起連接,外圍設備接受連接請求。當中央設備發起藍牙連接時,會發出包含一系列連接參數的連接請求(connect_req)。

連接間隔(Connection interval)

從設備延遲(Slavelatency)

管理超時(Managementtimeout)

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

CONNECTION_PRIORITY_BALANCED

CONNECTION_PRIORITY_HIGH

CONNECTION_PRIORITY_LOW

進程如下:


目標設備也可能會向安卓發送連接參數更新請求,希望按照自己的偏好改變間隔。但間隔設定的最終決定權還是在主設備(在鏈路層發起連接的設備)。

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

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

當我不確定安卓協議棧和API傳遞的數據是否正確時,就會啟動分析器,檢查不同層的細節。下面的截圖就顯示了 「Read by type」運行的細節。我還可以轉到 「Handle value pair」,針對其逐步進行調試。


調試隱藏活動(Invisible Activity)或後臺服務(Background Service)

APP不會一直在前臺運行。任何更高優先級的任務都可能將你的藍牙應用轉變為不可見模式。有時藍牙運行的實施是在後臺的服務中。多數情況下,藍牙不在前臺時,運行可能會有所不同。在後臺或服務中的運行場景需經過測試和認證。幾乎所有的安卓調試器都支持一項特性,那就是附加至某一特定進程。你只需要找到APP的進程ID,將調試器附加到這一特定進程即可。


自從安卓開始支持低功耗藍牙以來,每一次版本更新都包括了藍牙協議棧和API的改進。再加上易於開發者採用的API和工具,安卓正逐漸成為物聯網生態系統中最強有力的平臺。期待不久的將來能夠看到更多創新的安卓應用。

本篇作者為:藍牙技術聯盟技術項目經理 高文森先生

原文標題:如何利用安卓APP調試藍牙

文章出處:【微信公眾號:藍牙技術聯盟】歡迎添加關注!文章轉載請註明出處。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 安卓手機與51單片機間藍牙通信的實現
    利用藍牙模塊建立手機和設備間的通信應用非常廣泛。藍牙耳機今天分享下如利用藍牙4.0模塊建立安卓手機和51單片機間的藍牙通信。(1)安卓智慧型手機一部,只用是近幾年的智慧型手機都內嵌藍牙模塊,藍牙4.0及以上(2)任意51單片機最小系統都可使用,如下文連結。
  • 如何用 Python 寫一個安卓 APP ?
    開發安卓APP  我們使用kivy開發安卓APP,Kivy是一套專門用於跨平臺快速應用開發的開源框架,使用Python和Cython編寫,對於多點觸控有著非常良好的支持,不僅能讓開發者快速完成簡潔的交互原型設計,還支持代碼重用和部署,絕對是一款頗讓人驚豔的NUI框架。
  • 藍牙音樂SRC端的安卓實現
    藍牙音樂SRC側的安卓實現隨著電子產品的普及,越來越多的年輕人熱衷於使用藍牙技術來播放歌曲(相當多的手機品牌取消了耳機插孔),本篇文章就和大家聊聊藍牙音樂SRC端在安卓系統中的實現原理。安卓系統參考版本:Android-9藍牙SRC側播放藍牙音樂,音頻數據都是從安卓音頻系統發送過來的,藍牙協議棧接收到音頻數據處理再發送到SNK端進行播放,整體的流程大概如下圖所示:紅色框圖標註的部分就是我們今天探討的內容,在對藍牙音樂SRC介紹之前,我們得簡單了解下安卓中音頻系統
  • Keep - Keep下載_Keep安卓版下載_Keep app下載-太平洋下載中心
    用戶可利用碎片化的時間,隨時隨地選擇適合自己的視頻健身課程,進行真人同步訓練。完成後還可以"打卡"曬成就。你可根據器械、部位、難度篩選適合自己的課程,一些難度較大的動作,你還可以單獨觀看視頻和文字解析。結束訓練後,你可以"打卡"表示一天課程的完成,並評價自己的本次訓練。根據這些行為數據,Keep安卓版下載會分析你的健身習慣,不斷精確算法,將最適合你的健身計劃推送給你。
  • 使用 Frida 來 hack 安卓 APP(一)
    這是一篇介紹如何使用 Frida 來操作 Android apps 的文章。什麼是動態二進位插樁?動態二進位插樁(Dynamic Binary Instrumentation)意味著我們要在已經存在(或者運行)的二進位文件中注入外部代碼來使得它們去做一些它們之前沒有做的事情。
  • USB Dongle,讓藍牙調試「一步到位」
    藍牙功能的應用對大部分人來說,都不會感到陌生,比如共享單車,藍牙音響,藍牙耳機,藍牙滑鼠,藍牙鍵盤等,藍牙應用的領域非常廣。為了滿足不同的應用需求,藍牙設備在應用前,需要調試測試其功能。很多用戶在進行藍牙設備調試的時候,會受到調試設備的限制,很多時候需要特定的設備才能進行匹配和調試。在藍牙設備調試過程中,許多用戶遇到諸多不便。USB Dongle的出現,讓藍牙設備調試變得更加便捷。
  • 教程不會程式語言一樣搞定安卓APP開發
    你是否有一天想過,我是否自己能做個手機端APP來顯示個畫面,或者定製個自己的應用來著。可是一想,我C語言才剛剛考及格,JAVA還沒學過,XML語法都沒看過,還做個屁應用啊,所以一切的想法都讓他隨風飄散吧…….STOP!!  來看看App Inventor吧,有了它,你可以拋棄複雜的程式代碼而使用積木式的堆疊法來完成您的Android程式。
  • 【訓練營】安卓APP逆向分析必備技能,你掌握了嗎?
    ,對安卓APP的逆向分析也成為了廣大安全從業人員不可或缺的基本技能。為了實現對安卓APP的逆向分析工作,往往在拿到一個apk以後需要首先使用靜態分析對apk進行反編譯和代碼審計。 但是,隨著APP加殼技術的普及與加固服務的便捷,越來越多的安卓App在發布前便使用代碼加固來增加逆向分析難度,對加固App的脫殼便成了首要解決的難題。
  • 點點點:點出來安卓4.3的USB調試
    雖說谷歌發布Android 4.4已經發布三個多月了,不過不少旗艦手機還沒吃上KitKat,大部分安卓手機運行的依然是Android 4.3或者以下的系統。我們都知道,安卓手機用數據線連接手機時,需要打開USB調試,才可以管理手機多媒體,對手機進行root、刷機等操作,安卓4.3的用戶可能會奇怪,熟悉的USB調試藏到哪裡去了呢?
  • 如何Python寫一個安卓APP,附源碼!
    熱文導讀 | 點擊標題閱讀重磅實戰:如何用TensorFlow在安卓設備上實現深度學習
  • 暴風魔鏡S1搖控器如何連接手機 暴風S1藍牙手柄連手機教程
    暴風魔鏡S 1 搖控器如何連接手機、暴風魔鏡S 1 藍牙遙控器怎麼用、暴風魔鏡S 1 遙控器如何使用,暴風魔鏡S 1 手機藍牙手柄遙控器無法連接配對怎麼辦。運行暴風魔鏡app,進入魔鏡即可使用了!
  • 藍牙配對在安卓系統中的流程分析
    安卓系統藍牙配對流程分析配對流程基本上始於首次連接一個藍牙設備的過程中,本端的搜索流程結束獲取到該設備的BluetoothDevice信息,就可以開啟配對流程。因此通過藍牙技術進行的配對就是大家理解中的藍牙配對。隨著藍牙技術在消費市場上越來越普及,生活中很容易就能遇到藍牙配對這一使用藍牙功能事必不可缺失的步驟。本期我們就簡單聊聊安卓系統藍牙配對的流程是如何運行的。Application通過framework層BluetoothDevice對外提供的接口createBond()開啟這一流程。
  • 用 Python 寫一個安卓 APP
    然後設計應該是這樣。        開發安卓APP我們使用kivy開發安卓APP,Kivy是一套專門用於跨平臺快速應用開發的開源框架,使用Python和Cython編寫,對於多點觸控有著非常良好的支持,不僅能讓開發者快速完成簡潔的交互原型設計,還支持代碼重用和部署,絕對是一款頗讓人驚豔的NUI框架。
  • pixiv安卓app下載
    pixiv安卓app匯集海量的漫畫、小說、插畫資源,你想看的都只能在這裡找到!這裡的插畫非常的精彩豐富,還可以分享自己的作品,還有專屬的互動交流社區,給你別樣的社交新體驗!
  • 連Wi-Fi只上網就浪費了 安卓Wi-Fi妙用你知多少-Wi-Fi,安卓手機...
    安卓機化身PC攝像頭安卓相機的規格早已經遠遠高於電腦攝像頭,如果想要最大程度利用資源,在需要的時候把安卓機當成電腦攝像頭,是相當合理的想法。其實在WiFi環境下,就能通過一款叫「DroidCamX」的工具來實現這一點。
  • Quest如何安裝非Oculus商店安卓應用,方法來了
    想在Oculus Quest或者Go中安裝Oculus商店沒有的本地應用,或者亞馬遜Prime視頻、Steam Link(遊戲串流)等安卓應用怎麼辦?下面為大家準備了一份詳細指導。首先,你需要將本地應用下載到一臺Windows系統的電腦中,該電腦還需要配備USB接口。
  • 谷歌發力物聯網:推開源藍牙信標平臺Eddystone
    如果你希望吸引公司們使用信標來打廣告的話,一開局就喪失80%的受眾可不是什麼利好消息。相反,Eddystone是開源的,不僅能用在安卓系統上,iOS通過連結庫文件也可以使用。它在GitHub上存有原始碼。開放也是Eddystone最大的賣點。
  • 苔萌帶你玩 | makeblock mbot的APP inventor控制
    前幾天遇到一位朋友突然提起app inventor的手機APP控制硬體設備,前面一段時間一直在考慮如何做一個控制機械手去抓物塊的小應用
  • 用Android Studio動態調試手機QQ
    (模擬器內安裝Xposed框架、BuildProp Enhancer插件)開始:首先準備好安卓模擬器,在裡面安裝Xposed框架和BuildProp Enhancer插件,設置ro.secure和ro.debuggable的值為1:這麼做是為了能不修改AndroidManifest.xml中的debug屬性調試任何應用。
  • 利用單步運行及斷點設置來調試程序
    這講是第二節「利用單步運行及斷點設置來調試程序(Debugging)」。這套教程從簡單的錄製宏開始講解,一直到窗體的搭建,內容豐富,案例眾多。大家可以非常容易的掌握相關的知識,這套教程面向初學人員,共三冊,十七章,都是我們在利用EXCEL工作過程中需要掌握的知識點,希望大家能掌握利用。