- 小程序蓝牙每次操作完后 当即断开断开蓝牙
- 安卓手机部分机型 反复的对固定一个设备发出指令并且断开蓝牙后,重新连接有时候连接不上?
原因: 安卓如果多次调用 createBLEConnection 创建连接,有可能导致系统持有同一设备多个连接的实例,导致调用 closeBLEConnection 的时候并不能真正的断开与设备的连接。
方案: wx.createBLEConnectio 的fail的时候,需要重新连接几次,这样成功率大大增加。
// 连接设备
let reconnectCounts = 0;
function connectBluetooth() {
reconnectCounts++;
wx.createBLEConnection({
deviceId,
success: (res) => {
console.log('7. 建立设备连接');
reconnectCounts = null;
getBluetoothServers();
},
fail: (err) => {
console.log('7.1-err 连接失败,结束', err);
console.log('====================================');
console.log('开始重新连接', reconnectCounts);
console.log('====================================');
if (reconnectCounts <= 3) {
connectBluetooth();
} else {
reject({ deviceId });
closeFromAirtu({ deviceId });
}
},
});
}
/**
* 断开蓝牙
* @params deviceId String
*/
export async function closeFromAirtu({ deviceId }) {
return new Promise((resolve, reject) => {
// wx.hideLoading();
// console.log('closeFromAirtu', deviceId);
if (deviceId) {
wx.closeBLEConnection({
deviceId,
success: () => {
console.log('断开与低功耗蓝牙设备的连接');
// 断开蓝牙的连接 (初始化所有的状态)
wx.closeBluetoothAdapter({
success: () => {
console.log('关闭蓝牙模块');
resolve();
},
});
},
fail: (err) => {
console.log('断开与低功耗蓝牙设备的连接--err', err);
},
});
} else {
resolve();
}
});
}