手機藍芽硬體APP公司分析藍芽自動重連機制
在日常使用藍芽的過程中,想必大家都發現了這樣一個現象:連線藍芽裝置的手機在關閉再重新開啟藍芽後,會自動連線上先前連線著的那個裝置,同樣的場景對於安卓 手 機系統效果也是一致的。那這是怎麼實現的呢,本篇文章常州開發手機藍芽硬體APP公司就來聊一聊安卓系統中藍芽的自動重連機制。
由於藍芽分為Server和Client兩端,也就是手機和藍芽裝置( 車 機系統)這兩類具體載體,所以藍芽重連機制也會有所差異,但是整體上的流程基本相同:
監聽藍芽的狀態變化->獲取關閉藍芽前連線的裝置資訊->自動連線。
1、 手機藍芽自動重連機制的主要在程式 com.android.bluetooth 中實現的,路徑:
packages\apps\Bluetooth\src\com\android\bluetooth\btservice\PhonePolicy.java
For迴圈中透過判斷裝置某一個協議的優先順序決定是否發起該協議的連線,只有Priority = BluetoothProfile.PRIORITY_AUTO_CONNECT(1000)的裝置才會自動連線。
2、車 機藍芽自動重連機制的主要在程式 com.android.car 中實現的,路徑:
packages\services\Car\service\src\com\android\car\BluetoothDeviceConnectionPolicy.java
由於流程相差無幾,所以本篇就從車機藍芽系統的角度來分析下自動重連機制的實現原理,手機端的藍芽自動重連機制有機會再給大家 分析 。
車機藍芽的自動重連主要是在 com.android.car 這個服務程式中實現的,先來整體認識下這個程式吧。從該程式的清單檔案中可以知道其始於CarService.java:
從系統的全域性變數Settings中讀取已連線的裝置資訊,後面等監聽到藍芽狀態開啟後,再去重連這些裝置對應的各個協議。
該全域性變數儲存路徑:/data/system/users/0/settings_secure.xml
註冊監聽的藍芽廣播有如下幾種型別:
1、 BluetoothDevice.ACTION_BOND_STATE_CHANGED—裝置配對狀態;
2、 BluetoothA2dpSink.ACTION_CONNECTION_STATE_CHANGED—媒體音訊協議連線狀態;
3、 BluetoothHeadsetClient.ACTION_CONNECTION_STATE_CHANGED—手機音訊協議連線狀態;
4、 BluetoothPan.ACTION_CONNECTION_STATE_CHANGED—共享網路協議連線狀態;
5、 BluetoothPbapClient.ACTION_CONNECTION_STATE_CHANGED—電話簿協議連線狀態;
6、 BluetoothMapClient.ACTION_CONNECTION_STATE_CHANGED—簡訊協議連線狀態;
7、 BluetoothAdapter.ACTION_STATE_CHANGED—藍芽開關狀態;
8、 BluetoothDevice.ACTION_UUID—裝置UUID;
CarBluetoothUserService是透過bind服務PerUserCarService後getBluetoothUserService()間接使能起來的。
最後對協議重連是按照如下的協議順序來依次連線:
1、 BluetoothProfile.HEADSET_CLIENT
2、 BluetoothProfile.A2DP_SINK
3、 BluetoothProfile.PBAP_CLIENT
4、 BluetoothProfile.MAP_CLIENT
5、 BluetoothProfile.PAN
從整個流程分析下來最為關鍵的部分就是從Setting中讀取資料,並且會在藍芽關閉或程式退出時將已連線裝置的資訊儲存到Setting中。
實際上重連機制不單單適用於上述這種開啟藍芽後的場景,有時藍芽裝置間由於各種原因而導致鏈路斷開,過了一段時間需要自動重連上藍芽裝置,這種場景在上面的重連機制中就不適用了,那該如何實現呢?
方法那也是有的,還記得我有寫過一篇詳細講解了藍芽ACL鏈路斷開的幾種原因,然而不是每種斷開都需要自動重連的。比如使用者手動斷開藍芽這種情況下還發起自動重連,那就太讓人無語了。
所以我們只需要對由於鏈路超時導致的ACL斷開的場景,自動發起重連。這樣等兩個藍芽裝置再次靠近時,就能自動連線成功。
由於兩個藍芽裝置超時斷開後,再次靠近的時間是不確定的,如果只發起一次自動重連可能無法成功連線上裝置,因此這裡的自動重連機制中需要加個迴圈以保證某一次成功連線。
藍芽重連機制就簡單分析到這兒,感興趣的小夥伴 可以諮詢常州開發APP公司點個贊科技。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31421468/viewspace-2706551/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 藍芽耳機怎麼連線手機 藍芽耳機連線手機的方法藍芽
- 音響怎麼連線手機藍芽 音響連線手機藍芽的方法藍芽
- 藍芽耳機怎麼連線手機連不上怎麼辦 藍芽耳機突然無法連線手機藍芽
- 怎麼用手機藍芽連線電腦 手機藍芽連線電腦的步驟藍芽
- 小愛音響怎麼使用藍芽連線手機 小愛音響連線手機藍芽的方法藍芽
- 筆記本怎麼連藍芽耳機 筆記本連線藍芽耳機步驟筆記藍芽
- 白色藍芽耳機藍芽
- ubuntu20.04怎麼使用藍芽連線手機互傳檔案?ubuntu連線藍芽手機傳檔案的技巧Ubuntu藍芽
- 電腦能連藍芽耳機嗎 電腦怎麼連線藍芽耳機win10藍芽Win10
- 電腦可以連藍芽耳機嗎 win10電腦怎麼連線藍芽耳機藍芽Win10
- 好用的藍芽耳機有哪些推薦?真無線運動藍芽耳機藍芽
- 藍芽耳機連上為什麼沒聲音 藍芽耳機已連線但就是沒聲音藍芽
- 藍芽耳機怎麼恢復中文模式 藍芽耳機調不了中文藍芽模式
- omthing TWS藍芽耳機怎麼樣?omthing TWS藍芽耳機全面評測藍芽
- 藍芽耳機怎麼按都不亮了 藍芽耳機長按無反應藍芽
- Win10系統怎麼連線藍芽耳機 win10系統連線藍芽耳機的方法Win10藍芽
- 筆記本怎麼連線藍芽耳機 膝上型電腦連線藍芽裝置教程筆記藍芽
- 藍芽藍芽
- 如何消除藍芽耳機底噪 藍芽耳機一放歌就有滋滋聲藍芽
- Win10電腦怎麼連線藍芽耳機 win10怎麼藍芽耳機配對Win10藍芽
- 電腦藍芽怎麼連線 電腦連線藍芽的方法藍芽
- 如何在Macbook Pro中連線藍芽耳機?Mac藍芽
- win10藍芽功能怎麼開 win10系統如何連線藍芽耳機Win10藍芽
- Android藍芽使用詳解(普通藍芽)Android藍芽
- 藍芽耳機怎麼連線電腦?Win10系統電腦配對藍芽耳機的方法藍芽Win10
- 什麼藍芽耳機牌子好、口碑最好的藍芽耳機幾乎無差評!藍芽
- 手機藍芽搜尋不到裝置怎麼辦 藍芽裝置刪除後搜尋不到藍芽
- 為什麼藍芽耳機連上卻沒有聲音 藍芽明明已連線但就是沒聲音藍芽
- omthing TWS無線藍芽耳機怎麼樣?omthing TWS無線藍芽耳機評測藍芽
- 什麼藍芽耳機音質最好價效比高 2022五大藍芽耳機排名藍芽
- 藍芽耳機5.0和5.2哪個好 藍芽5.0和5.2的區別藍芽
- win10藍芽耳機連線不上怎麼辦_win10藍芽耳機連線不上的解決方法Win10藍芽
- 電腦怎麼連線藍芽耳機 連線藍芽耳機的詳細教程(win7、win10、win11)藍芽Win7Win10
- iOS藍芽開發 Bluetooth藍芽CoreBluetooth 藍芽中心裝置的實現 藍芽外設的實現 有DemoiOS藍芽
- win10系統怎麼連線手機藍芽【圖文教程】Win10藍芽
- 藍芽連線手機,電腦成功,手機失敗(PIN碼或金鑰不正確)藍芽
- 藍芽韌體升級藍芽
- 電腦怎麼連藍芽音響 藍芽音響連線電腦步驟藍芽