flutter - 如何在颤振背景下扫描 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);
}
}
}
}
});
}
解决方案
如果您启动后台服务,请跨平台,除非您需要在应用程序运行时运行此服务(不是作为后台提取,意味着应用程序在前台,但不在主线程上运行) .
如果您需要运行flutter_blue插件,请在此处使用此包。如果您尝试运行任何其他插件,它将失败: https ://pub.dev/packages/flutter_isolate
此外,如果您需要将其作为后台提取运行,请在此处使用此插件: https ://pub.dev/packages/background_fetch
推荐阅读
- shiny - 使用 JavaScript 在 DataTable 中用颜色格式化行
- flutter - AnimatedSize 裁剪小部件
- build - 从命令行指定 msbuild 包目录
- python - Pandas 获取对象 dtype 中所有数据类型的列表
- amazon-web-services - 为什么我仍然被亚马逊 S3 收费
- javascript - 将鼠标悬停在图像上的另一个 div 上会打断我的 onmouseenter
- java - 如何通过标签从与其他类同名的跨度类中获取元素?
- ldap - rbac 为 True 时气流中的 ldap 配置
- flutter - 是否有可能在下拉按钮中显示的值不在菜单中?
- php - 我想在两个 CodeIgniter 函数之间发送数据