小程序实现蓝牙广播功能,配置广播信息,蓝牙设备接收广播信息做出响应
先看代码
//在页面加载时候初始化蓝牙适配器
uni.openBluetoothAdapter({
success: e => {
console.log('初始化蓝牙成功:' + e.errMsg);
this.openBle();
},
fail: e => {
console.log('初始化蓝牙失败,错误码:' + (e.errCode || e.errMsg));
}
});
启动低功耗蓝牙广播
// 低功耗蓝牙广播测试
openBle() {
wx.openBluetoothAdapter({
success: (res) => {
console.info('Bluetooth adapter opened');
console.log('Creating BLEPeripheralServer');
wx.createBLEPeripheralServer({
success: (res) => {
console.info('createBLEPeripheralServer successed', res);
let server = res.server;
console.log(server);
let uuid1 = '0000af8e-0000-1000-8000-00805f9b34fb';
let uuid2 = '0000ae8f-0000-1000-8000-00805f9b34fb';
let buff = [0x0a, 0x0b, 0x0c, 0x0d];
server.startAdvertising({
advertiseRequest: {
connectable: true,
serviceUuids: [
uuid1,
uuid2
],
manufacturerData: [{
manufacturerId: 0x01AC,
manufacturerSpecificData: buff
}]
}
}).then(
(res) => {
console.log('Adverstising.. ', res);
},
(res) => {
console.warn('Advertising failed', res);
});
},
fail: (res) => {
console.warn('createBLEPeripheralServer failed');
},
complete: (res) => {
console.debug('createBLEPeripheralServer completed');
}
});
},
fail: (res) => {
console.log('openBluetoothAdapter failed');
console.warn(res);
},
complete: (res) => {
console.debug('openBluetoothAdapter completed');
},
});
},
我们可以再写一个蓝牙接收广播的工具,扫描广播信息并打印出来
scandata:02011A07FFAC01F2411CAD05038EAF8FAE
解释一下这个数据的意思
分三个部分:02011A,07FFAC010A0B0C0D, 05038EAF8FAE
1、02011A这3个字节,02表示后面一段数据长度为2字节,01表示数据类型是flag ,1A就是flag的数据了
2、07FFAC010A0B0C0D, 07表示后面数据长度是7个字节,FF表示数据类型是制造商, 其中AC01制造商id,注意这个是倒过来的,配置的是01AC、0A0B0C0D为制造商数据
3、05038EAF8FAE 其中05数据长度、03数据类型时uuid、8EAF8FAE是uuid的数据,注意这里的数据也是倒过来的,由两个uuid拼接而成