本机0.59.1
react-native-ble-plx 1.0.3
这是一个仅限Android的问题。
我们的应用程序通过蓝牙连接洗衣机和烘干机。我们的MachineListScreen
列出了可用的机器
machineA
machineB
machineC
使用react-native-ble-plx
方法connectToDevice(machine)
,我们可以成功连接到machineA
,machineB
和machineC
,过渡到ConnectedToMachineScreen
并进行互动。
这仅起作用一次!
下次我们connectToDevice(machine)
时,它只是无法连接。错误是DeviceConnectionFailed
。这是由于我们强加了连接尝试超时,但这并不重要。我们的连接尝试超时时间为10秒。但是我们尝试将其提高到30秒,60秒等,但仍然失败。
在iOS上不会发生这种情况。 iOS反复连接。
问题
在Android上,是否可能需要BluetoothGatt.refresh()
才能重新连接到计算机?如果是这样,是否有人知道如何使用以下connectToDevice()
选项来做到这一点:
connectToDevice(machine, { refreshGatt: ? })
此项的值是什么?
失败了,有人有其他建议吗?
这是代码。
_handleMachinePress = async machine => {
try {
this.setState({ loading: true });
await ble.connectionManager.connectToMachine(machine);
const passProps = { ...props };
navigateToScreen(ConnectedToMachineScreen, passProps);
} catch (error) {
console.warn(error);
} finally {
this.setState({ loading: false });
}
}
export const connectToMachine = async machine => {
return new Promise(async (resolve, reject) => {
let connectedDevice;
try {
connectedDevice = await ble.connectToDevice(machine.id, { timeout: 10000 });
} catch (error) {
try {
await timeout(5000);
connectedDevice = await ble.connectToDevice(machine.id, { timeout: 10000});
} catch (error) {
reject(error);
return;
}
}
try {
const exploredDevice = await connectedDevice.discoverAllServicesAndCharacteristics();
await exploredDevice.services();
resolve();
} catch (error) {
reject(error);
}
});
};