手機(jī)藍(lán)牙硬件APP公司如何分析藍(lán)牙自動(dòng)重連機(jī)制-創(chuàng)新互聯(lián)

小編今天帶大家了解手機(jī)藍(lán)牙硬件APP公司如何分析藍(lán)牙自動(dòng)重連機(jī)制,文中知識點(diǎn)介紹的非常詳細(xì)。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內(nèi)容,希望能夠幫助更多想解決這個(gè)問題的朋友找到問題的答案,下面跟著小編一起深入學(xué)習(xí)“手機(jī)藍(lán)牙硬件APP公司如何分析藍(lán)牙自動(dòng)重連機(jī)制”的知識吧。

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)廣陽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

在日常使用藍(lán)牙的過程中,想必大家都發(fā)現(xiàn)了這樣一個(gè)現(xiàn)象:連接藍(lán)牙設(shè)備的手機(jī)在關(guān)閉再重新打開藍(lán)牙后,會自動(dòng)連接上先前連接著的那個(gè)設(shè)備,同樣的場景對于安卓手機(jī)系統(tǒng)效果也是一致的。那這是怎么實(shí)現(xiàn)的呢,本篇文章常州開發(fā)手機(jī)藍(lán)牙硬件APP公司就來聊一聊安卓系統(tǒng)中藍(lán)牙的自動(dòng)重連機(jī)制。

由于藍(lán)牙分為Server和Client兩端,也就是手機(jī)和藍(lán)牙設(shè)備(車機(jī)系統(tǒng))這兩類具體載體,所以藍(lán)牙重連機(jī)制也會有所差異,但是整體上的流程基本相同:

監(jiān)聽藍(lán)牙的狀態(tài)變化->獲取關(guān)閉藍(lán)牙前連接的設(shè)備信息->自動(dòng)連接。

1、手機(jī)藍(lán)牙自動(dòng)重連機(jī)制的主要在進(jìn)程 com.android.bluetooth 中實(shí)現(xiàn)的,路徑:

packages\apps\Bluetooth\src\com\android\bluetooth\btservice\PhonePolicy.java

手機(jī)藍(lán)牙硬件APP公司如何分析藍(lán)牙自動(dòng)重連機(jī)制

For循環(huán)中通過判斷設(shè)備某一個(gè)協(xié)議的優(yōu)先級決定是否發(fā)起該協(xié)議的連接,只有Priority = BluetoothProfile.PRIORITY_AUTO_CONNECT(1000)的設(shè)備才會自動(dòng)連接。

2、車機(jī)藍(lán)牙自動(dòng)重連機(jī)制的主要在進(jìn)程 com.android.car 中實(shí)現(xiàn)的,路徑:

packages\services\Car\service\src\com\android\car\BluetoothDeviceConnectionPolicy.java

手機(jī)藍(lán)牙硬件APP公司如何分析藍(lán)牙自動(dòng)重連機(jī)制

由于流程相差無幾,所以本篇就從車機(jī)藍(lán)牙系統(tǒng)的角度來分析下自動(dòng)重連機(jī)制的實(shí)現(xiàn)原理,手機(jī)端的藍(lán)牙自動(dòng)重連機(jī)制有機(jī)會再給大家分析。

車機(jī)藍(lán)牙的自動(dòng)重連主要是在 com.android.car 這個(gè)服務(wù)進(jìn)程中實(shí)現(xiàn)的,先來整體認(rèn)識下這個(gè)進(jìn)程吧。從該進(jìn)程的清單文件中可以知道其始于CarService.java:

從系統(tǒng)的全局變量Settings中讀取已連接的設(shè)備信息,后面等監(jiān)聽到藍(lán)牙狀態(tài)打開后,再去重連這些設(shè)備對應(yīng)的各個(gè)協(xié)議。

該全局變量存儲路徑:/data/system/users/0/settings_secure.xml

注冊監(jiān)聽的藍(lán)牙廣播有如下幾種類型:

1、BluetoothDevice.ACTION_BOND_STATE_CHANGED—設(shè)備配對狀態(tài);

2、BluetoothA2dpSink.ACTION_CONNECTION_STATE_CHANGED—媒體音頻協(xié)議連接狀態(tài);

3、BluetoothHeadsetClient.ACTION_CONNECTION_STATE_CHANGED—手機(jī)音頻協(xié)議連接狀態(tài);

4、BluetoothPan.ACTION_CONNECTION_STATE_CHANGED—共享網(wǎng)絡(luò)協(xié)議連接狀態(tài);

5、BluetoothPbapClient.ACTION_CONNECTION_STATE_CHANGED—電話簿協(xié)議連接狀態(tài);

6、BluetoothMapClient.ACTION_CONNECTION_STATE_CHANGED—短信協(xié)議連接狀態(tài);

7、BluetoothAdapter.ACTION_STATE_CHANGED—藍(lán)牙開關(guān)狀態(tài);

8、BluetoothDevice.ACTION_UUID—設(shè)備UUID;

手機(jī)藍(lán)牙硬件APP公司如何分析藍(lán)牙自動(dòng)重連機(jī)制

CarBluetoothUserService是通過bind服務(wù)PerUserCarService后getBluetoothUserService()間接使能起來的。

最后對協(xié)議重連是按照如下的協(xié)議順序來依次連接:

1、BluetoothProfile.HEADSET_CLIENT

2、BluetoothProfile.A2DP_SINK

3、BluetoothProfile.PBAP_CLIENT

4、BluetoothProfile.MAP_CLIENT

5、BluetoothProfile.PAN

從整個(gè)流程分析下來最為關(guān)鍵的部分就是從Setting中讀取數(shù)據(jù),并且會在藍(lán)牙關(guān)閉或進(jìn)程退出時(shí)將已連接設(shè)備的信息保存到Setting中。

實(shí)際上重連機(jī)制不單單適用于上述這種打開藍(lán)牙后的場景,有時(shí)藍(lán)牙設(shè)備間由于各種原因而導(dǎo)致鏈路斷開,過了一段時(shí)間需要自動(dòng)重連上藍(lán)牙設(shè)備,這種場景在上面的重連機(jī)制中就不適用了,那該如何實(shí)現(xiàn)呢?

方法那也是有的,還記得我有寫過一篇詳細(xì)講解了藍(lán)牙ACL鏈路斷開的幾種原因,然而不是每種斷開都需要自動(dòng)重連的。比如用戶手動(dòng)斷開藍(lán)牙這種情況下還發(fā)起自動(dòng)重連,那就太讓人無語了。

所以我們只需要對由于鏈路超時(shí)導(dǎo)致的ACL斷開的場景,自動(dòng)發(fā)起重連。這樣等兩個(gè)藍(lán)牙設(shè)備再次靠近時(shí),就能自動(dòng)連接成功。

由于兩個(gè)藍(lán)牙設(shè)備超時(shí)斷開后,再次靠近的時(shí)間是不確定的,如果只發(fā)起一次自動(dòng)重連可能無法成功連接上設(shè)備,因此這里的自動(dòng)重連機(jī)制中需要加個(gè)循環(huán)以保證某一次成功連接。

感謝大家的閱讀,以上就是“手機(jī)藍(lán)牙硬件APP公司如何分析藍(lán)牙自動(dòng)重連機(jī)制”的全部內(nèi)容了,學(xué)會的朋友趕緊操作起來吧。相信創(chuàng)新互聯(lián)小編一定會給大家?guī)砀鼉?yōu)質(zhì)的文章。謝謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!

網(wǎng)站標(biāo)題:手機(jī)藍(lán)牙硬件APP公司如何分析藍(lán)牙自動(dòng)重連機(jī)制-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://bm7419.com/article36/dgoosg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、搜索引擎優(yōu)化網(wǎng)站維護(hù)、企業(yè)網(wǎng)站制作、微信小程序、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)