亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種連接藍牙雙模設(shè)備的方法及裝置與流程

文檔序號:11882094閱讀:518來源:國知局
一種連接藍牙雙模設(shè)備的方法及裝置與流程

本發(fā)明涉及電子產(chǎn)品領(lǐng)域,尤其涉及一種連接藍牙雙模設(shè)備的方法及裝置。



背景技術(shù):

藍牙(Bluetooth)技術(shù)是一種無線數(shù)據(jù)通信的開放性全球規(guī)范,它以低成本的近距離無線連接為基礎(chǔ),為固定移動設(shè)備通信環(huán)境建立一個特殊的無線連接。它廣泛應(yīng)用于世界各地,可以無線連接手機、便攜式計算機、汽車、立體聲耳機、音樂播放器等多種設(shè)備,是當(dāng)今市場上支持范圍最廣泛、功能最豐富且安全的近場無線通信標(biāo)準(zhǔn)。

截至目前為止,藍牙技術(shù)聯(lián)盟共發(fā)布八個版本的藍牙技術(shù)標(biāo)準(zhǔn),即藍牙1.0、1.1、1.2、2.0、2.1、3.0、4.0和4.1。從技術(shù)性能上劃分,目前的藍牙技術(shù)主要可分為基本碼率(簡寫B(tài)R)藍牙技術(shù)和低功耗(簡寫B(tài)LE,英文全稱:Bluetooth Low Energy)藍牙技術(shù)。其中,基本碼率藍牙技術(shù)可實現(xiàn)增強速率藍牙傳輸;而BLE藍牙技術(shù)是對傳統(tǒng)藍牙BR/EDR藍牙技術(shù)的補充,與傳統(tǒng)的BR/EDR藍牙技術(shù)相比,BLE藍牙技術(shù)具有這三大特性,即縮短無線開啟時間、快速建立連接、減低收發(fā)峰值功耗,從而實現(xiàn)低功耗。目前僅藍牙4.0及以上標(biāo)準(zhǔn)支持BLE藍牙技術(shù),而藍牙3.0及其以下標(biāo)準(zhǔn)采用BR藍牙技術(shù),兼容性較差。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種連接藍牙雙模設(shè)備的方法及裝置。

本發(fā)明提供了一種連接藍牙雙模設(shè)備的方法,包括:

步驟S1:終端設(shè)備判斷自身是否支持低功耗藍牙設(shè)備,是則執(zhí)行步驟S2,否則執(zhí)行步驟S5;

步驟S2:所述終端設(shè)備設(shè)置與藍牙設(shè)備的連接方式為低功耗連接;

步驟S3:所述終端設(shè)備搜索藍牙設(shè)備,并判斷是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則執(zhí)行步驟S4,否則執(zhí)行步驟S5;

步驟S4:所述終端設(shè)備向搜索到的所述藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則開始與所述藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟S3;

步驟S5:所述終端設(shè)備設(shè)置與藍牙設(shè)備的連接方式為經(jīng)典藍牙連接;

步驟S6:所述終端設(shè)備注冊廣播接收器,并設(shè)置所述廣播接收器的過濾器的動作;

步驟S7:所述終端設(shè)備搜索藍牙設(shè)備,并判斷是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則執(zhí)行步驟S8,否則返回步驟S2;

步驟S8:所述終端設(shè)備向搜索到的所述藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則開始與所述藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟S7。

其中,所述步驟S1包括:

步驟S1-1:所述終端設(shè)備獲取自身系統(tǒng)的版本號,并判斷所述自身系統(tǒng)的版本號是否小于第一預(yù)設(shè)值,是則執(zhí)行步驟S5,否則執(zhí)行步驟S1-2;

步驟S1-2:所述終端設(shè)備獲取低功耗硬件特征屬性,并判斷是否獲取到,是則執(zhí)行步驟S2,否則執(zhí)行步驟S5。

其中,所述方法還包括:所述終端設(shè)備開機后給版本常量賦值;

所述步驟S1-1具體為:所述終端設(shè)備獲取所述版本常量的值,并判斷所述版本常量的值是否小于第一預(yù)設(shè)值,是則執(zhí)行步驟S5,否則執(zhí)行步驟S1-2。

其中,所述步驟S1-2具體為:所述終端設(shè)備通過調(diào)用第二系統(tǒng)函數(shù)獲取低功耗硬件特征屬性,如所述如第二函數(shù)返回第一字符則獲取到低功耗硬件特征屬性,如第二函數(shù)返回第二字符則未獲取到低功耗硬件特征屬性。

其中,所述步驟S3或步驟S7之前包括:所述終端設(shè)備將要連接的藍牙設(shè)備名稱設(shè)為預(yù)定名。

其中,所述判斷是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,具體為:判斷在第一預(yù)設(shè)時間內(nèi)是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備。

其中,所述步驟S3具體為:

所述終端設(shè)備通過掃描函數(shù)采用低功耗方式搜索藍牙設(shè)備,根據(jù)所述掃描函數(shù)的第一參數(shù)值獲取藍牙設(shè)備對象,通過所述藍牙設(shè)備對象中的獲取名稱函數(shù)獲取藍牙設(shè)備的名稱,并比較所述獲取到的藍牙設(shè)備的名稱是否與預(yù)定名相同,是則執(zhí)行步驟S4,否則執(zhí)行步驟S5。

其中,所述步驟S4具體為:所述終端設(shè)備根據(jù)所述藍牙設(shè)備對象調(diào)用第三系統(tǒng)函數(shù)發(fā)起連接,并獲得配置對象,根據(jù)所述配置對象調(diào)用回調(diào)函數(shù)判斷連接是否成功,是則開始與所述藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟S3。

其中,所述步驟S7具體包括:所述終端設(shè)備通過藍牙掃描方法搜索藍牙設(shè)備,當(dāng)搜索到藍牙設(shè)備時觸發(fā)接收對象的接收函數(shù),通過所述接收函數(shù)的第二參數(shù)獲取藍牙設(shè)備對象,通過所述藍牙設(shè)備對象中的獲取名稱函數(shù)獲取藍牙設(shè)備的名稱,并比較所述獲取到的藍牙設(shè)備的名稱是否與預(yù)定名相同,是則執(zhí)行步驟S8,否則返回步驟S2。

其中,所述步驟S8之前還包括:所述終端設(shè)備根據(jù)獲取到的所述藍牙設(shè)備對象調(diào)用第四系統(tǒng)函數(shù)創(chuàng)建連接對象;

所述步驟S8具體為:所述終端設(shè)備根據(jù)所述連接對象調(diào)用第五系統(tǒng)函數(shù)對獲取到的所述藍牙設(shè)備發(fā)起連接,若所述第五函數(shù)正常返回,則連接成功,開始與所述藍牙設(shè)備進行數(shù)據(jù)通訊,否則連接失敗,返回步驟S7。

本發(fā)明又提供了一種連接藍牙雙模設(shè)備的裝置,包括:

11、一種連接藍牙雙模設(shè)備的裝置,其特征在于,包括:

第一判斷模塊,用于判斷終端設(shè)備是否支持低功耗藍牙設(shè)備,是則觸發(fā)第一設(shè)置模塊,否則觸發(fā)第二設(shè)置模塊;

所述第一設(shè)置模塊,用于設(shè)置與藍牙設(shè)備的連接方式為低功耗連接;

第一搜索判斷模塊,用于搜索藍牙設(shè)備,并判斷是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則觸發(fā)第一連接判斷模塊,否則觸發(fā)所述第二設(shè)置模塊;

所述第一連接判斷模塊,用于向搜索到的所述藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則開始與所述藍牙設(shè)備進行數(shù)據(jù)通訊,否則觸發(fā)所述第一搜索判斷模塊;

所述第二設(shè)置模塊,用于設(shè)置與藍牙設(shè)備的連接方式為經(jīng)典藍牙連接;

注冊設(shè)置模塊,用于注冊廣播接收器,并設(shè)置所述廣播接收器的過濾器的動作;

第二搜索判斷模塊,用于搜索藍牙設(shè)備,并判斷是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則觸發(fā)第二連接判斷模塊,否則觸發(fā)所述第一設(shè)置模塊;

所述第二連接判斷模塊,用于向搜索到的所述藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則開始與所述藍牙設(shè)備進行數(shù)據(jù)通訊,否則觸發(fā)所述第二搜索判斷模塊。

其中,所述第一判斷模塊包括:

第一判斷單元,用于獲取終端設(shè)備系統(tǒng)的版本號,并判斷所述終端設(shè)備系統(tǒng)的版本號是否小于第一預(yù)設(shè)值,是則觸發(fā)所述第二設(shè)置模塊,否則觸發(fā)第二判斷單元;

所述第二判斷單元,用于獲取低功耗硬件特征屬性,并判斷是否獲取到,是則觸發(fā)所述第一設(shè)置模塊,否則觸發(fā)所述第二設(shè)置模塊。

其中,所述裝置還包括:

賦值模塊,用于在所述終端設(shè)備開機后給版本常量賦值;

所述第一判斷單元具體用于獲取所述版本常量的值,并判斷所述版本常量的值是否小于第一預(yù)設(shè)值。

其中,所述第二判斷單元具體用于通過調(diào)用第二系統(tǒng)函數(shù)獲取低功耗硬件特征屬性,如所述第二函數(shù)返回第一字符則獲取到低功耗硬件特征屬性,如第二函數(shù)返回第二字符則未獲取到低功耗硬件特征屬性。

其中,所述方法還包括:設(shè)定模塊,用于將要連接的藍牙設(shè)備名稱設(shè)為預(yù)定名。

其中,所述第一搜索判斷模塊用于搜索藍牙設(shè)備,并判斷在第一預(yù)設(shè)時間內(nèi)是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備;

所述第二搜索判斷模塊用于搜索藍牙設(shè)備,并判斷在第一預(yù)設(shè)時間內(nèi)是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備。

其中,所述第一搜索判斷模塊具體用于通過掃描函數(shù)采用低功耗方式搜索藍牙設(shè)備,根據(jù)所述掃描函數(shù)的第一參數(shù)值獲取藍牙設(shè)備對象,通過所述藍牙設(shè)備對象中的獲取名稱函數(shù)獲取藍牙設(shè)備的名稱,并比較所述獲取到的藍牙設(shè)備的名稱是否與預(yù)定名相同,是則觸發(fā)第一連接判斷模塊,否則觸發(fā)所述第二設(shè)置模塊。

其中,所述第一連接判斷模塊具體用于根據(jù)所述藍牙設(shè)備對象調(diào)用第三系統(tǒng)函數(shù)發(fā)起連接,并獲得配置對象,根據(jù)所述配置對象調(diào)用回調(diào)函數(shù)判斷連接是否成功,是則開始與所述藍牙設(shè)備進行數(shù)據(jù)通訊,否則觸發(fā)所述第一搜索判斷模塊。

其中,所述第二搜索判斷模塊具體用于通過藍牙掃描方法搜索藍牙設(shè)備,當(dāng)搜索到藍牙設(shè)備時觸發(fā)接收對象的接收函數(shù),通過所述接收函數(shù)的第二參數(shù)獲取藍牙設(shè)備對象,通過所述藍牙設(shè)備對象中的獲取名稱函數(shù)獲取藍牙設(shè)備的名稱,并比較所述獲取到的藍牙設(shè)備的名稱是否與預(yù)定名相同,是則觸發(fā)第二連接判斷模塊,否則觸發(fā)所述第一設(shè)置模塊。

其中,所述方法還包括:創(chuàng)建模塊,用于根據(jù)獲取到的所述藍牙設(shè)備對象調(diào)用第四系統(tǒng)函數(shù)創(chuàng)建連接對象;

所述第二連接判斷模塊具體用于根據(jù)所述連接對象調(diào)用第五系統(tǒng)函數(shù)對獲取到的所述藍牙設(shè)備發(fā)起連接,若所述第五函數(shù)正常返回,則連接成功,開始與所述藍牙設(shè)備進行數(shù)據(jù)通訊,否則連接失敗,觸發(fā)所述第二搜索判斷模塊。

本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點:

本實施例的技術(shù)方案適用于支持藍牙的終端設(shè)備(如安卓手機和蘋果手機),終端設(shè)備首先使用低功耗方式與藍牙設(shè)備進行連接,如連接不上再使用經(jīng)典藍牙方式與藍牙設(shè)備進行連接,這樣無論是IOS系統(tǒng)設(shè)備還是安卓設(shè)備,首先均使用低功耗方式連接,達到節(jié)電的目的,使終端設(shè)備的兼容性更好。

附圖說明

圖1為本發(fā)明實施例一提供的一種連接藍牙雙模設(shè)備的方法流程圖;

圖2為本發(fā)明實施例二提供的一種連接藍牙雙模設(shè)備的方法流程圖;

圖3為本發(fā)明實施例三提供的一種連接藍牙雙模設(shè)備的方法流程圖;

圖4為本發(fā)明實施例四提供的一種連接藍牙雙模設(shè)備的裝置方框圖。

具體實施方式

下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

實施例一

本發(fā)明實施例一提供一種連接藍牙雙模設(shè)備的方法,如圖1所示,包括:

步驟101:終端設(shè)備判斷自身的藍牙及藍牙權(quán)限是否打開,是則執(zhí)行步驟103,否則執(zhí)行步驟102;

步驟102:終端設(shè)備提示打開藍牙及藍牙權(quán)限信息,返回步驟101;

在本實施例中,用戶看到打開信息后手動打開終端設(shè)備的藍牙及其權(quán)限信息,優(yōu)選的,如在預(yù)設(shè)時間內(nèi)終端設(shè)備檢測到未打開藍牙和\或藍牙權(quán)限信息則會報錯,結(jié)束;

步驟103:終端設(shè)備掃描藍牙設(shè)備的廣播;

在本實施例中,在步驟103之前還包括:終端設(shè)備注冊CBCentralManager類;CBCentralManager類用于實現(xiàn)BLE功能;

具體的,步驟103為:終端設(shè)備通過調(diào)用CBCentralManager類中的scanForPeripheralsWithServices函數(shù)來掃描藍牙設(shè)備的廣播;如終端設(shè)備掃描到藍牙設(shè)備的廣播,則說明終端設(shè)備可以與該藍牙設(shè)備進行連接;

步驟104:終端設(shè)備獲取掃描到的藍牙設(shè)備并匹配預(yù)設(shè)的設(shè)備標(biāo)識名;

在本實施例中,步驟104具體包括:終端設(shè)備通過CBCentralManager類的didDiscoverPeripheral代理函數(shù)獲取掃描到的藍牙設(shè)備并匹配預(yù)設(shè)的設(shè)備標(biāo)識名;

步驟105:終端設(shè)備停止掃描藍牙設(shè)備廣播;

在本實施例中,步驟105具體包括:終端設(shè)備通過CBCentralManager的stopscan函數(shù)停止掃描藍牙設(shè)備廣播;

步驟106:終端設(shè)備掃描藍牙設(shè)備中的服務(wù),并獲取掃描到的服務(wù);

在本實施例中,步驟106之前還包括:終端設(shè)備保存藍牙設(shè)備對象CBPeripheral實例;具體的,終端設(shè)備將系統(tǒng)回調(diào)函數(shù)didDiscoverPeripheral中的CBPeripheral實例保存到預(yù)設(shè)的藍牙設(shè)備對象CBPeripheral實例中;

在本實施例中,步驟106具體包括:終端設(shè)備通過CBPeripheral類的discoverServices方法掃描設(shè)備中的服務(wù),通過didDiscoverServices代理獲取掃描到的服務(wù);

步驟107:終端設(shè)備掃描并獲取服務(wù)中的特征;

在本實施例中,步驟107具體包括:終端設(shè)備通過CBPeripheral類的discoverCharacteristics:nil forService函數(shù)掃描服務(wù)中的特征,通過didDiscoverCharacteristicsForService代理獲取掃描到的特征;

步驟108:終端設(shè)備連接與特征對應(yīng)的設(shè)備,并判斷是否連接成功,是則保存藍牙設(shè)備對象和掃描到的讀寫特征,開始與藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟108;

在本實施例中,步驟108具體包括:終端設(shè)備通過CBCentralManager類的connectPeripheral方法連接與特征對應(yīng)的設(shè)備,并通過CBCentralManager類的didconnectPeripheral代理獲取連接成功的狀態(tài),如返回TRUE則保存藍牙設(shè)備對象和掃描到的讀寫特征,否則返回步驟108;

優(yōu)選的,在本實施例中,如在預(yù)設(shè)時間內(nèi)終端設(shè)備與對應(yīng)的藍牙設(shè)備未連接成功,則會報錯。

實施例二

本發(fā)明實施例二提供一種連接藍牙雙模設(shè)備的方法,如圖2所示,包括

步驟201:終端設(shè)備將要連接的藍牙設(shè)備名稱設(shè)為預(yù)定名;

步驟202:終端設(shè)備獲取自身系統(tǒng)的版本號,并判斷自身系統(tǒng)的版本號是否小于第一預(yù)設(shè)值,是則執(zhí)行步驟203,否則執(zhí)行步驟207;

具體的,在本實施例中,終端設(shè)備獲取版本常量值,并判斷版本常量值是否小于第一預(yù)設(shè)值,是則執(zhí)行步驟203,否則執(zhí)行步驟207。終端設(shè)備開機后賦值給版本常量值;優(yōu)選的,版本常量值為Build.VERION.SDK_INT;第一預(yù)設(shè)值具體為18;例如獲取版本常量值具體為:Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN_MR2;

步驟203:終端設(shè)備獲取BLE硬件特征屬性,并判斷是否獲取到,是則執(zhí)行步驟204,否則執(zhí)行步驟207;

在本實施例中,終端設(shè)備通過調(diào)用第二系統(tǒng)函數(shù)獲取BLE硬件特征屬性,具體的,第二系統(tǒng)函數(shù)為:PackageManage類中的函數(shù)hasSystemFeature(),如第二函數(shù)返回True則獲取到BLE硬件特征屬性,如第二函數(shù)返回False則未獲取到BLE硬件特征屬性;

步驟204:終端設(shè)備設(shè)置藍牙通訊類型為第一方式;

具體的,在本實施例中,終端設(shè)備設(shè)置藍牙通訊類型為bt4,即終端設(shè)備支持藍牙4.0及4.1的標(biāo)準(zhǔn),終端設(shè)備與藍牙設(shè)備通過BLE連接;例如:預(yù)先定義枚舉類型的全局變量在步驟204中將其設(shè)置為bt4;

步驟205:終端設(shè)備搜索藍牙設(shè)備,并判斷是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則執(zhí)行步驟206,否則執(zhí)行步驟207;

優(yōu)選的,終端設(shè)備判斷在第一預(yù)設(shè)時間內(nèi)是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,具體的,本實施例中的第一預(yù)設(shè)時間為20s;

在本實施例中,藍牙設(shè)備開啟后,進行分時廣播,廣播間隔頻率為2Hz;當(dāng)藍牙設(shè)備接收到連接請求后,在第二預(yù)設(shè)時間之后判斷是否還在連接,是則停止所有廣播,結(jié)束,否則關(guān)閉電源;具體的,第二預(yù)設(shè)時間為180s;如終端設(shè)備搜索到廣播,則表示搜索到了藍牙設(shè)備;

在本實施例中,終端設(shè)備通過掃描函數(shù)采用BLE方式搜索藍牙設(shè)備:具體的,本實施例中的掃描函數(shù)為BluetoothAdapter.startLeScan(mBleScanCallback),其中mBleScanCallback是類LeScanCallback實例化對象,當(dāng)掃描到一個設(shè)備時系統(tǒng)回調(diào)該對象的onLeScan(final BluetoothDevice device,int rssi,byte[]scanRecord)函數(shù),該函數(shù)的第一參數(shù)即為藍牙設(shè)備對象,也就是掃描到的藍牙設(shè)備,通過該藍牙設(shè)備對象的getName()方法獲取到該藍牙設(shè)備的名稱,通過String.equal(String)方法比較獲取到的藍牙設(shè)備的名稱與預(yù)定名,如果返回值為true,則認(rèn)為找到了目標(biāo)藍牙設(shè)備,停止BLE掃描,開始BLE連接,否則繼續(xù)等待系統(tǒng)回調(diào)onLeScan()。如果在預(yù)設(shè)的時間內(nèi)仍沒有找到目標(biāo)藍牙設(shè)備,則通過BluetoothAdapter.stopLeScan(mBleScanCallback)方法停止BLE掃描。

步驟206:終端設(shè)備向搜索到的藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則開始與藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟205;

在本實施例中,步驟206之前還包括:終端設(shè)備實例化BluetoothGattCallback()類;BluetoothGattCallback()是一個抽象類,包含onConnectionStateChange(BluetoothGatt gatt,int status,int newState),用于判斷連接狀態(tài),其中第三參數(shù)newState表示連接或斷開,第二參數(shù)status表示連接或斷開是否成功;

本實施例中終端設(shè)備根據(jù)藍牙設(shè)備對象調(diào)用第三系統(tǒng)函數(shù)發(fā)起連接,并獲得配置對象,具體的,第三系統(tǒng)函數(shù)為:connectGatt(Context context,boolean autoConnect,BluetoothGattCallback callback);其中第三參數(shù)callback即為實例化的BluetoothGattCallback()類,第二參數(shù)優(yōu)選為false,第三系統(tǒng)函數(shù)會返回一個BluetoothGatt對象(命名為gatt)即配置對象;

在本實施例中,終端設(shè)備根據(jù)配置對象(gatt)調(diào)用回調(diào)函數(shù)判斷連接是否成功,是則與藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟208;具體的,終端設(shè)備調(diào)用回調(diào)函數(shù)nConnectionStateChange(BluetoothGatt gatt,int status,int newState),根據(jù)該函數(shù)的第三參數(shù)newState判斷狀態(tài)是連接還是斷開如newState為BluetoothProfile.STATE_CONNECTED則表示連接,newState為BluetoothProfile.STATE_DISCONNECTED則表示斷開;;第二參數(shù)status表示連接或斷開是否成功,如第二參數(shù)為true則表示成功,為false則表示失??;

在本實施例中,步驟206判斷為否時還可以去執(zhí)行步驟207;

步驟207:終端設(shè)備設(shè)置藍牙通訊類型為第二方式;

具體的,在本實施例中,終端設(shè)備設(shè)置藍牙通訊類型為bt3;即終端設(shè)備支持藍牙3.0及其以下的標(biāo)準(zhǔn),終端設(shè)備與藍牙設(shè)備通過SPP連接;例如:將預(yù)先定義的全局變量設(shè)置為bt3;

步驟208:終端設(shè)備注冊廣播接收器,并設(shè)置該廣播接收器的過濾器的動作;

在本實施例中,步驟208具體為:終端設(shè)備通過Context.registerReceiver(mReceiver,filter)注冊廣播接收器,參數(shù)mReceiver是定義的廣播接收器類對象,通過IntentFilter filter=new IntentFilter(BluetoothDevice.ACTION_FOUND)定義廣播接收器的過濾器,并將其動作設(shè)置為BluetoothDevice.ACTION_FOUND;

步驟209:終端設(shè)備搜索藍牙設(shè)備,判斷是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則執(zhí)行步驟210,否則返回步驟204;

優(yōu)選的,終端設(shè)備判斷在第一預(yù)設(shè)時間內(nèi)是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則執(zhí)行步驟210,否則返回步驟204;

在本實施例中,步驟209包括:終端設(shè)備搜索藍牙設(shè)備并獲取該藍牙設(shè)備的名稱,判斷獲取到的藍牙設(shè)備的名稱是否與預(yù)定名相同,是則執(zhí)行步驟210,否則返回步驟204;具體的,終端設(shè)備通過BluetoothAdapter.startDiscovery()方法搜索藍牙設(shè)備,當(dāng)搜索到藍牙設(shè)備時觸發(fā)mReceiver對象的onReceive(Context context,Intent intent)函數(shù),通過該函數(shù)的第二參數(shù)的getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)方法可以獲取到藍牙設(shè)備對象,也就是掃描到的藍牙設(shè)備;通過該藍牙設(shè)備對象的getName()方法獲取到該藍牙設(shè)備的名稱,通過String.equal(String)方法比較該藍牙設(shè)備的名稱與預(yù)定名,如返回true則則認(rèn)為找到了目標(biāo)藍牙設(shè)備,停止3.0掃描,開始3.0連接,否則繼續(xù)掃描。如果在預(yù)設(shè)的時間內(nèi)仍沒有找到目標(biāo)藍牙設(shè)備,則停止3.0掃描。本實施例中,停止掃描的方法是:BluetoothAdapter.cancelDiscovery()。

步驟210:終端設(shè)備對查找到的藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則開始與藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟209;

在本實施例中,步驟210之前還包括:終端設(shè)備根據(jù)獲取到的藍牙設(shè)備對象調(diào)用第四系統(tǒng)函數(shù)創(chuàng)建連接對象(mSocket);具體的,第四系統(tǒng)函數(shù)為:createRfcommSocketToServiceRecord(MY_UUID),其中參數(shù)MY_UUID是一個藍牙唯一標(biāo)識(UUID)變量,優(yōu)選的UUID為00002201-0000-2000-8000-00805F9B34FB;

步驟210具體為:終端設(shè)備根據(jù)連接對象(mSocket)調(diào)用第五系統(tǒng)函數(shù)對藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則與藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟209;第五系統(tǒng)函數(shù)為mSocket.connect(),若該函數(shù)正常返回,沒有拋異常,則認(rèn)為連接成功,否則連接失??;

在本實施例中,步驟210判斷為否時還可以去執(zhí)行步驟205;

本實施例的方法適用于支持藍牙的終端設(shè)備(如安卓手機和蘋果手機),終端設(shè)備首先使用低功耗方式與藍牙設(shè)備進行連接,如連接不上再使用經(jīng)典藍牙方式與藍牙設(shè)備進行連接,這樣無論是IOS系統(tǒng)設(shè)備還是安卓設(shè)備,首先均使用低功耗方式連接,達到節(jié)電的目的,使終端設(shè)備的兼容性更好。

實施例三

本發(fā)明實施例三提供一種連接藍牙雙模設(shè)備的方法,如圖3所示,包括

步驟301:終端設(shè)備獲取自身系統(tǒng)的版本號,并判斷自身系統(tǒng)的版本號是否小于第一預(yù)設(shè)值,是則執(zhí)行步驟302,否則執(zhí)行步驟308;

步驟302:終端設(shè)備通過調(diào)用第二系統(tǒng)函數(shù)獲取BLE硬件特征屬性,并判斷是否獲取到,是則執(zhí)行步驟303,否則執(zhí)行步驟308;

步驟303:終端設(shè)備設(shè)置藍牙通訊類型為第一方式;

具體的,在本實施例中,終端設(shè)備設(shè)置藍牙通訊類型為bt4,即終端設(shè)備支持藍牙4.0及4.1的標(biāo)準(zhǔn),終端設(shè)備與藍牙設(shè)備通過BLE連接;

步驟304:終端設(shè)備搜索藍牙設(shè)備,并判斷在第一預(yù)設(shè)時間內(nèi)是否搜索到預(yù)定名的藍牙設(shè)備,是則執(zhí)行步驟305,否則執(zhí)行步驟308;

具體的,本實施例中的第一預(yù)設(shè)時間為10s;

在本實施例中,藍牙設(shè)備開啟后,進行分時廣播,廣播間隔頻率為2Hz;當(dāng)藍牙設(shè)備接收到連接請求后,在第二預(yù)設(shè)時間之后判斷是否還在連接,是則停止所有廣播,結(jié)束,否則關(guān)閉電源;具體的,第二預(yù)設(shè)時間為180s;

藍牙設(shè)備進行分時廣播具體為:藍牙備在第二預(yù)設(shè)頻道范圍上進行藍牙4.0廣播,到達第一預(yù)設(shè)時間后,在第一預(yù)設(shè)頻道上進行藍牙3.0廣播,到達第一預(yù)設(shè)時間后,重新在第二預(yù)設(shè)頻道范圍上進行藍牙4.0廣播,并且當(dāng)藍牙智能密鑰設(shè)備進行藍牙3.0廣播或藍牙4.0廣播后,在第二預(yù)設(shè)時間內(nèi)等待接收來自移動終端的連接請求。

步驟305:終端設(shè)備實例化BluetoothGattCallback()類;

步驟306:終端設(shè)備根據(jù)藍牙設(shè)備對象調(diào)用第三系統(tǒng)函數(shù)發(fā)起連接,并獲得配置對象;

具體的,本實施例中的第三系統(tǒng)函數(shù)為:device.connectGatt();

步驟307:終端設(shè)備根據(jù)配置對象調(diào)用回調(diào)函數(shù)判斷連接是否成功,是則開始與藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟304;

步驟308:終端設(shè)備設(shè)置藍牙通訊類型為第二方式;

具體的,在本實施例中,終端設(shè)備設(shè)置藍牙通訊類型為bt3;即終端設(shè)備支持藍牙3.0及其以下的標(biāo)準(zhǔn),終端設(shè)備與藍牙設(shè)備通過SPP連接;

步驟309:終端設(shè)備注冊廣播接收器,并設(shè)置該廣播接收器的過濾器的動作;

步驟310:終端設(shè)備判斷在第一預(yù)設(shè)時間內(nèi)是否查找到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則執(zhí)行步驟311,否則返回步驟303;

步驟311:終端設(shè)備根據(jù)藍牙唯一標(biāo)識調(diào)用第四系統(tǒng)函數(shù)創(chuàng)建連接對象;

具體的,本實施例中的第四系統(tǒng)函數(shù)為:createRfcommSocketToServiceRecord();優(yōu)選的,藍牙唯一標(biāo)識為UUID;

步驟312:終端設(shè)備根據(jù)連接對象調(diào)用第五系統(tǒng)函數(shù)對藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則開始與藍牙設(shè)備進行數(shù)據(jù)通訊,否則返回步驟310;

具體的,在本實施例中,第五系統(tǒng)函數(shù)為mSocket.connect()。

實施例四

本發(fā)明實施例四提供一種連接藍牙雙模設(shè)備的裝置,如圖4所示,包括:

第一判斷模塊401,用于判斷終端設(shè)備是否支持低功耗藍牙設(shè)備,是則觸發(fā)第一設(shè)置模塊402,否則觸發(fā)第二設(shè)置模塊405;

在本實施例中,第一判斷模塊401包括第一判斷單元和第二判斷單元;

第一判斷單元,用于獲取終端設(shè)備系統(tǒng)的版本號,并判斷終端設(shè)備系統(tǒng)的版本號是否小于第一預(yù)設(shè)值,是則觸發(fā)第二設(shè)置模塊405,否則觸發(fā)第二判斷單元;

本實施例中的裝置還包括:賦值模塊,用于在終端設(shè)備開機后給版本常量賦值;第一判斷單元具體用于獲取版本常量的值,并判斷版本常量的值是否小于第一預(yù)設(shè)值;

第二判斷單元,用于獲取低功耗硬件特征屬性,并判斷是否獲取到,是則觸發(fā)第一設(shè)置模塊402,否則觸發(fā)第二設(shè)置模塊405;

在本實施例中,第二判斷單元具體用于通過調(diào)用第二系統(tǒng)函數(shù)獲取低功耗硬件特征屬性,如第二函數(shù)返回第一字符則獲取到低功耗硬件特征屬性,如第二函數(shù)返回第二字符則未獲取到低功耗硬件特征屬性;例如,第一字符為True,第二字符為False;

第一設(shè)置模塊402,用于設(shè)置與藍牙設(shè)備的連接方式為低功耗連接;

第一搜索判斷模塊403,用于搜索藍牙設(shè)備,并判斷是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則觸發(fā)第一連接判斷模塊404,否則觸發(fā)第二設(shè)置模塊405;

優(yōu)選的,在本實施例中,第一搜索判斷模塊404用于搜索藍牙設(shè)備,并判斷在第一預(yù)設(shè)時間內(nèi)是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備;

在本實施例中,第一搜索判斷模塊403具體用于通過掃描函數(shù)采用低功耗方式搜索藍牙設(shè)備,根據(jù)掃描函數(shù)的第一參數(shù)值獲取藍牙設(shè)備對象,通過藍牙設(shè)備對象中的獲取名稱函數(shù)獲取藍牙設(shè)備的名稱,并比較獲取到的藍牙設(shè)備的名稱是否與預(yù)定名相同,是則觸發(fā)第一連接判斷模塊404,否則觸發(fā)第二設(shè)置模塊405;

第一連接判斷模塊404,用于向搜索到的藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則開始與藍牙設(shè)備進行數(shù)據(jù)通訊,否則觸發(fā)第一搜索判斷模塊403;

在本實施例中,第一連接判斷模塊404具體用于根據(jù)藍牙設(shè)備對象調(diào)用第三系統(tǒng)函數(shù)發(fā)起連接,并獲得配置對象,根據(jù)配置對象調(diào)用回調(diào)函數(shù)判斷連接是否成功,是則開始與藍牙設(shè)備進行數(shù)據(jù)通訊,否則觸發(fā)第一搜索判斷模塊403;

第二設(shè)置模塊405,用于設(shè)置與藍牙設(shè)備的連接方式為經(jīng)典藍牙連接;

注冊設(shè)置模塊406,用于注冊廣播接收器,并設(shè)置廣播接收器的過濾器的動作;

第二搜索判斷模塊407,用于搜索藍牙設(shè)備,并判斷是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備,是則觸發(fā)第二連接判斷模塊408,否則觸發(fā)第一設(shè)置模塊402;

優(yōu)選的,在本實施例中,第二搜索判斷模塊407用于搜索藍牙設(shè)備,并判斷在第一預(yù)設(shè)時間內(nèi)是否搜索到與預(yù)定名對應(yīng)的藍牙設(shè)備;

在本實施例中,第二搜索判斷模塊407具體用于通過藍牙掃描方法搜索藍牙設(shè)備,當(dāng)搜索到藍牙設(shè)備時觸發(fā)接收對象的接收函數(shù),通過接收函數(shù)的第二參數(shù)獲取藍牙設(shè)備對象,通過藍牙設(shè)備對象中的獲取名稱函數(shù)獲取藍牙設(shè)備的名稱,并比較獲取到的藍牙設(shè)備的名稱是否與預(yù)定名相同,是則觸發(fā)第二連接判斷模塊408,否則觸發(fā)第一設(shè)置模塊402;

第二連接判斷模塊408,用于向搜索到的藍牙設(shè)備發(fā)起連接,并判斷連接是否成功,是則開始與藍牙設(shè)備進行數(shù)據(jù)通訊,否則觸發(fā)第二搜索判斷模塊407。

本實施例中的裝置還包括:創(chuàng)建模塊,用于根據(jù)獲取到的藍牙設(shè)備對象調(diào)用第四系統(tǒng)函數(shù)創(chuàng)建連接對象;

在本實施例中,第二連接判斷模塊408具體用于根據(jù)連接對象調(diào)用第五系統(tǒng)函數(shù)對獲取到的藍牙設(shè)備發(fā)起連接,若第五函數(shù)正常返回,則連接成功,開始與藍牙設(shè)備進行數(shù)據(jù)通訊,否則連接失敗,觸發(fā)第二搜索判斷模塊407。

本實施例中的裝置還包括:設(shè)定模塊,用于將要連接的藍牙設(shè)備名稱設(shè)為預(yù)定名。

以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明公開的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1