問題描述:
1.啟動app,搜索并連接藍牙成功后,第一次采集數(shù)據(jù)正常; 問題定位
1.復現(xiàn)問題,根據(jù)測試提供的方法,先測試iphone正常,三星S7edge,結果是能正常連接藍牙,后來又測試vivo x7plus和小米MI5,終于成功復現(xiàn)該問題; 問題修復
上述問題定位中,(3)可以發(fā)現(xiàn)應該是沒有斷開上次藍牙連接導致的,(4)又發(fā)現(xiàn),重新搜索藍牙以后再連接可以解決該問題; wx.createBLEConnection({ deviceId: deviceId, success: function (res) { //連接成功 initnotifyCharacteristic(notifyCharacteristic);// 指定特征值,并進行數(shù)據(jù)交互 // 已連接 _bthConnectStaus = BTH_STATUS_CONNECTED; }, fail: function (res) {// 連接藍牙失敗 _bthConnectStaus = BTH_STATUS_DISCONNECT; // 回調(diào)上層藍牙連接失敗 callback(res.errCode, "connect failed") } 然后根據(jù)fail中的res.errCode判斷是否10003。 if(code == 10003) { // 部分android手機特殊情況下需要重新搜索才能連接藍牙,此時報錯10003,進行藍牙搜索(ps:原因可能是系統(tǒng)中將手機藍牙關閉導致連接狀態(tài)不能改為斷開,導致下次無法連接同一個設備) var timeId = setTimeout(function () { stopSearchBluetooth(); callback(false, "timout") }, 5000); // 最多搜索5s searchBluetooth(function (res) { if (res.devices === undefined || res.devices === null) { return; } for (var i = 0; i < res.devices.length; i++) { if (res.devices[i] && res.devices[i].deviceId == deviceId) { // 搜索到該設備 console.log("searchDeviceAndReConnect:find device and re connect"); clearTimeout(timeId); stopSearchBluetooth() // 停止搜索 callback(true, "find device");// 找到設備,在回調(diào)函數(shù)中連接藍牙 break; } } }, function (res) { clearTimeout(timeId); stopSearchBluetooth() // 停止搜索 callback(false, "searchBluetooth fail") }); }
上述代碼提供了一個簡單的流程,當連接出現(xiàn)10003錯誤時,搜索藍牙設備,找到后,重新連接藍牙。
相關問題
1.微信小程序藍牙連接僅支持4.0,而BLE低功耗藍牙設備是帶有定位功能的,所以,需要有定位權限,部分手機(如vivo x7plus)需要打開手機定位功能才能搜索到藍牙設備,詳細可百度 “Android6.0藍牙BLE連接,定位動態(tài)權限相關” Android機型多,BLE低功耗藍牙也不是很穩(wěn)定,這就導致了在Android上開發(fā)藍牙會有很多奇怪的問題,而微信小程序基于Android和IOS,相應的也會出現(xiàn)一些問題,IOS還好,系統(tǒng)軟硬件都單一,但Android的問題就多了,之前開發(fā)還遇到一些需要注意的,暫時想不起來,后續(xù)再補充 |