var main = plus.android.runtimeMainActivity();
var Context = plus.android.importClass(“android.content.Context”);
BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
plus.android.importClass(BManager); //引入相关的method函数
BAdapter = BManager.getAdapter();
plus.android.importClass(BAdapter);//引入相关的method函数,这样之后才会有isEna
var lists = BAdapter.getBondedDevices();
plus.android.importClass(lists);
var resultDiv = document.getElementById(‘bluetooth_list’);
var iterator = lists.iterator();
plus.android.importClass(iterator);
while(iterator.hasNext()) {
var d = iterator.next();
plus.android.importClass(d);
console.log(“名称:”+d.getName()+",地址:"+d.getAddress());
}
在uniapp中这个方法可以获取已配对的蓝牙列表,但是要在BManager和BAdapter 前加var,并注释掉//var resultDiv = document.getElementById(‘bluetooth_list’); 好像因为vue语法不支持DOM的操作
getName() 和 getAddress这两个方法有文档吗
厉害了,果断收藏。
这上面贴的代码,好像都不是获取可用蓝牙设备列表,而是获取配对过的蓝牙设备列表,确认下?
function bluetooth_list(){
var main = plus.android.runtimeMainActivity();
var Context = plus.android.importClass(“android.content.Context”);
var lists = BAdapter.getBondedDevices();
plus.android.importClass(lists);
var resultDiv = document.getElementById(‘bluetooth_list’);
var iterator = lists.iterator();
plus.android.importClass(iterator);
while (iterator.hasNext()) {
var d = iterator.next();
plus.android.importClass(d);
console.log(d.getAddress());
}
}
您好,请问一下,用这个方法只能获取一次设备列表,我退出页面重新进来就获取不到了是为什么呢?
问下蓝牙传输数据怎么写
这个只支持低功耗蓝牙吗
想问下,我输出了BManager、BAdapter、lists、iterator。这个上面三个都有uuid,哪个是我蓝牙的uuid啊。
在 uni-app
中获取蓝牙设备列表,你可以使用 uni.openBluetoothAdapter
和 uni.startBluetoothDevicesDiscovery
API。以下是一个完整的示例代码,展示了如何在 uni-app
中实现获取蓝牙设备列表的功能。
首先,确保你的 manifest.json
文件中已经配置了蓝牙权限:
{
"mp-weixin": {
"appid": "your-app-id",
"setting": {
"bluetooth": true
}
}
}
然后,在你的页面脚本中,可以这样实现:
Page({
data: {
devices: [] // 用于存储发现的蓝牙设备列表
},
onLoad() {
this.initBluetooth();
},
// 初始化蓝牙适配器
initBluetooth() {
uni.openBluetoothAdapter({
success: (res) => {
console.log('蓝牙适配器初始化成功', res);
this.startDiscovery();
},
fail: (err) => {
console.error('蓝牙适配器初始化失败', err);
}
});
},
// 开始发现蓝牙设备
startDiscovery() {
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false, // 是否允许重复上报同一设备,默认为 false
success: (res) => {
console.log('开始发现蓝牙设备', res);
this.onDeviceFound();
},
fail: (err) => {
console.error('发现蓝牙设备失败', err);
}
});
},
// 监听找到新设备的事件
onDeviceFound() {
uni.onBluetoothDeviceFound((devices) => {
console.log('找到新设备', devices.devices);
this.setData({
devices: [...this.data.devices, ...devices.devices] // 更新设备列表
});
});
},
// 停止发现蓝牙设备(通常在页面卸载时调用)
stopDiscovery() {
uni.stopBluetoothDevicesDiscovery({
success: (res) => {
console.log('停止发现蓝牙设备', res);
},
fail: (err) => {
console.error('停止发现蓝牙设备失败', err);
}
});
},
onUnload() {
this.stopDiscovery(); // 页面卸载时停止发现蓝牙设备
}
});
在这个示例中,我们首先初始化蓝牙适配器,然后开始发现蓝牙设备。通过监听 onBluetoothDeviceFound
事件,我们可以实时获取到找到的新设备,并将其添加到设备列表中。在页面卸载时,我们调用 stopBluetoothDevicesDiscovery
来停止发现蓝牙设备,以节省系统资源。
请注意,实际开发中还需要处理用户权限问题,以及针对不同平台的兼容性问题。此外,蓝牙操作通常比较耗电,因此应合理控制蓝牙扫描的频率和时间。