uni-app中uni.getBluetoothDevices无法获取到连接过的蓝牙设备

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app中uni.getBluetoothDevices无法获取到连接过的蓝牙设备

1 回复

在uni-app中,uni.getBluetoothDevices 方法用于获取在蓝牙模块生效期间,所有搜索到的蓝牙设备。然而,它并不能直接获取到已经连接过的蓝牙设备列表。要获取已连接设备的列表,需要使用 uni.getConnectedBluetoothDevices 方法。

以下是一个示例代码,展示了如何使用 uni.getConnectedBluetoothDevices 来获取已连接的蓝牙设备,并结合 uni.getBluetoothDevices 来获取所有搜索到的设备:

// 获取已连接的蓝牙设备
uni.getConnectedBluetoothDevices({
    success: function (res) {
        console.log('已连接的蓝牙设备:', res.devices);
        // res.devices 是一个数组,包含了已连接设备的详细信息
        if (res.devices.length > 0) {
            // 遍历已连接设备,进行后续操作
            res.devices.forEach(device => {
                console.log('设备名称:', device.name);
                console.log('设备ID:', device.deviceId);
                // 可以将设备信息保存到全局变量或进行其他处理
            });
        } else {
            console.log('没有已连接的蓝牙设备');
        }
    },
    fail: function (err) {
        console.error('获取已连接蓝牙设备失败:', err);
    }
});

// 获取所有搜索到的蓝牙设备(注意:需要先开启蓝牙并开始搜索)
uni.openBluetoothAdapter({
    success: function () {
        console.log('蓝牙适配器已打开');
        uni.startBluetoothDevicesDiscovery({
            allowDuplicatesKey: false,
            success: function () {
                console.log('已开始搜索蓝牙设备');
                setTimeout(() => {
                    uni.getBluetoothDevices({
                        success: function (res) {
                            console.log('搜索到的蓝牙设备:', res.devices);
                            // res.devices 是一个数组,包含了搜索到的设备的详细信息
                            res.devices.forEach(device => {
                                console.log('设备名称:', device.name);
                                console.log('设备ID:', device.deviceId);
                                // 可以将设备信息保存到全局变量或进行其他处理
                            });
                        },
                        fail: function (err) {
                            console.error('获取蓝牙设备失败:', err);
                        }
                    });
                    // 停止搜索,避免不必要的资源消耗
                    uni.stopBluetoothDevicesDiscovery({
                        success: function () {
                            console.log('已停止搜索蓝牙设备');
                        }
                    });
                }, 5000); // 假设搜索5秒后停止
            },
            fail: function (err) {
                console.error('开始搜索蓝牙设备失败:', err);
            }
        });
    },
    fail: function (err) {
        console.error('打开蓝牙适配器失败:', err);
    }
});

在这个示例中,我们首先尝试获取已连接的蓝牙设备,然后开启蓝牙适配器并开始搜索设备,在搜索过程中调用 uni.getBluetoothDevices 获取所有搜索到的设备。最后,我们停止搜索以避免不必要的资源消耗。

请注意,使用这些API之前,需要确保设备已开启蓝牙功能,并且用户已授权应用访问蓝牙设备的权限。

回到顶部