gpt4 book ai didi

Flutter Bluetooth Serial Discovery - 取消发现(流关闭)

转载 作者:行者123 更新时间:2023-12-05 04:51:51 27 4
gpt4 key购买 nike

所以我正在尝试在 https://github.com/edufolly/flutter_bluetooth_serial/tree/master/example 上复制示例在我的主要应用程序上。但奇怪的是,当它集成到我的中时,它的行为会有所不同。我认为这可能是一件非常简单和直接的事情,但事实证明它带来了更多的麻烦。

基本上发现没有找到任何设备并打印以下内容:

D/FlutterBluePlugin(26807): Starting discovery
D/BluetoothAdapter(26807): startDiscovery
D/FlutterBluePlugin(26807): Canceling discovery (stream closed)
D/BluetoothAdapter(26807): cancelDiscovery
D/BluetoothAdapter(26807): cancelDiscovery = false

负责它并且表现不同的代码是:

//...

StreamSubscription<BluetoothDiscoveryResult> _streamSubscription;

//...

void _startDiscovery() {
print(FlutterBluetoothSerial.instance.startDiscovery());

_streamSubscription =
FlutterBluetoothSerial.instance.startDiscovery().listen((r) {
Provider.of<BluetoothProvider>(context, listen: false)
.addFoundedDevice(r);
print(r.device.name);
print(r);
});

_streamSubscription.onDone(() {
Provider.of<BluetoothProvider>(context, listen: false).isDiscovering =
false;
});
}

//...

调试显示没有进入listen函数。

打印 FlutterBluetoothSerial.instance.startDiscovery() 给我们以下信息:

I/flutter (26807): Instance of '_ControllerStream<BluetoothDiscoveryResult>

我已经解决这个问题好几天了。我注意到/做过的事情:

  1. 该示例在较旧的 android 嵌入上运行(降级它给了我一个错误。插件绑定(bind)错误,我认为);
  2. 我向我的项目添加了一些权限以正常使用蓝牙(Internet、蓝牙、Bluetooth_Admin 以及精细和类(class)位置);
  3. MinSdk 设置为 API 19;
  4. 我尝试添加一个 future.delayed 并等待它,然后再继续我的发现功能,结果相同;
  5. 我在 dispose 上处理了我的 streamSubscription(取消它),我自然地尝试通过重新启动、重新运行、调试和卸载来解决这个问题;
  6. 我运行了 2 种不同的设备;
  7. 几个月前我遇到了这个问题,我认为相同的代码适用于 2 个不同的人(开发人员、不同的电脑和手机),但在我的 2 部手机和我的 friend (还有不同的电脑和手机)上都失败了。我知道我当时是怎么做到的,同样我不知道为什么它现在不起作用。
  8. 我认为我的应用处于开发模式,尽管它不是我设置的,我也没有尝试更改它。
  9. 我可能做了更多的事情,但那是我现在能记住的。

我正在用 flutter 为 android 开发。任何帮助将不胜感激!

最佳答案

在获取当前状态之前,我已经使用这一行解决了问题:

await FlutterBluetoothSerial.instance.cancelDiscovery();

// Get current state
FlutterBluetoothSerial.instance.state.then((state) { ...

不知道为什么,第一次连接后,如果不断开连接,下次就不允许发现新设备。

关于Flutter Bluetooth Serial Discovery - 取消发现(流关闭),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66737454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com