一些麻煩事兒
藍(lán)牙設(shè)備比較多會(huì)把手機(jī)卡死,公司能掃描到200+個(gè)設(shè)備,直接把iphone5S的微信卡死了。
每次硬件操作之間一定加延遲,建議100ms,例如“打開藍(lán)牙”與“開始掃描”間,“連接成功”與“獲取服務(wù)”等等之類。不使用延遲可能會(huì)出現(xiàn)莫名其妙的錯(cuò)誤,多見于Android端。
注意JS的異步、并發(fā)特性,特別在輪詢service下的characteristic。小程序還不支持async,await(代碼補(bǔ)全中有這兩個(gè)關(guān)鍵字,但是編譯不過)。
藍(lán)牙的數(shù)據(jù)讀寫、advertisData的類型是ArrayBuffer,(引用小程序的注意:vConsole 無法打印出 ArrayBuffer 類型數(shù)據(jù))。鞋童們請先把二進(jìn)制數(shù)組、十六進(jìn)制字符串弄明白吧,代碼中有轉(zhuǎn)換的方法(復(fù)制自github)。
初始化藍(lán)牙適配器(wx.openBluetoothAdapter(OBJECT))、獲取本機(jī)藍(lán)牙適配器狀態(tài)(wx.getBluetoothAdapterState(OBJECT)),這兩個(gè)函數(shù)那個(gè)先調(diào)用不好說,自己玩吧,見下說明。
一些BUG
1、藍(lán)牙在掃描過程中,獲取本機(jī)藍(lán)牙適配器狀態(tài)(wx.getBluetoothAdapterState(OBJECT))。(Android獨(dú)有,華為榮耀8、VIVO 7plus,6.5.13)
available\Boolean\藍(lán)牙適配器是否可用,值為true。
discovering\Boolean\是否正在搜索設(shè)備,值為false。
https://github.com/FFiot/WX_Bluetooth/issues/1
2、藍(lán)牙在掃描過程中,再次啟動(dòng)掃描wx.startBluetoothDevicesDiscovery(OBJECT):fail,errCode=10008。(Android獨(dú)有,華為榮耀8、VIVO 7plus,6.5.13)BUG:藍(lán)牙掃描中查詢藍(lán)牙狀態(tài) · Issue #1 · FFiot/WX_Bluetoothgithub.com藍(lán)牙在掃描過程中,再次啟動(dòng)掃描wx.startBluetoothDevicesDiscovery(OBJECT):fail,errCode=10008。(Android獨(dú)有,華為榮耀8、VIVO 7plus,6.5.13)
https://github.com/FFiot/WX_Bluetooth/issues/2
errorCode與errMsg混在一起。(IOS獨(dú)有,IPHONE5s,微信6.5.15)
https://github.com/FFiot/WX_Bluetooth/issues/3
3、藍(lán)牙在掃描service下character時(shí),如果有多個(gè)service,只能正常獲取第一個(gè)service下的character,其余service獲取的chara與第一個(gè)service相同。(IOS獨(dú)有,IPHONE5s,微信6.5.15)
移動(dòng)設(shè)備藍(lán)牙開啟\關(guān)閉用兩種狀態(tài),觸發(fā)wx.onBluetoothAdapterStateChange回調(diào)
1、wx.getBluetoothAdapterState(OBJECT)
關(guān)閉狀態(tài)返回:drrCode:10000,errMsg:"getBluetoothAdapterState:fail"。此時(shí)開啟藍(lán)牙: wx.onBluetoothAdapterStateChange(CALLBACK)無回調(diào)。
開啟狀態(tài)返回:drrCode:10000,errMsg:"getBluetoothAdapterState:fail"。此時(shí)關(guān)閉藍(lán)牙: wx.onBluetoothAdapterStateChange(CALLBACK)無回調(diào)。
2、wx.getBluetoothAdapterState(OBJECT)
關(guān)閉狀態(tài)返回:drrCode:10001,errMsg:"openBluetoothAdapter:fail"。此時(shí)開啟藍(lán)牙:wx.onBluetoothAdapterStateChange(CALLBACK)有回調(diào)。
開啟狀態(tài)返回:errMsg:"openBluetoothAdapter:ok"。此時(shí)開啟藍(lán)牙:wx.onBluetoothAdapterStateChange(CALLBACK)有回調(diào)。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com