首页 > 解决方案 > 如何在颤振背景下扫描 BLE 设备

问题描述

我正在使用flutter_blue插件扫描 BLE 设备我有一个压力监控设备,当压力发生变化时它会广播 BLE 信号。我想在我的颤振应用程序中接收这些值,然后将它们发送到 Firestore。

当应用程序在前台时一切正常,但当应用程序在后台时它不起作用。

下面是我的扫描仪功能

  void scanner() {
   flutterBlue.startScan(timeout: Duration(days: 5));
   flutterBlue.scanResults.listen((results) {
    if (results != null && results.length > 0) {
     for (var i = 0; i < results.length; i++) {
       bool checkpoint1 = results[i].device.id.toString() == frontDevice;
       bool checkpoint2 = results[i].device.id.toString() == rearDevice;

       if (checkpoint1) {
        first = results[i].advertisementData.manufacturerData;
       }

      if (checkpoint2) {
        second = results[i].advertisementData.manufacturerData;
      }

      if (results.length - 1 == i) {

        if (first != null && second != null) {
          deviceData(first, second);
        }

      }

    }
  }
 });
}

标签: flutterdart-isolates

解决方案


如果您启动后台服务,请跨平台,除非您需要在应用程序运行时运行此服务(不是作为后台提取,意味着应用程序在前台,但不在主线程上运行) .

如果您需要运行flutter_blue插件,请在此处使用此包。如果您尝试运行任何其他插件,它将失败: https ://pub.dev/packages/flutter_isolate

此外,如果您需要将其作为后台提取运行,请在此处使用此插件: https ://pub.dev/packages/background_fetch


推荐阅读