我想从我们作为一家公司开发的睡眠跟踪设备中提取一个文件,应用到我们通过蓝牙使用Flight开发的应用程序中.该文件将以.bin格式保存到设备.Ffltter_Blue_plus套餐能做到这点吗?或者任何不同的方法?如果你能帮忙,我会很高兴的

推荐答案

是的,这是可能的,但不是直截了当的.你将不得不在你的睡眠跟踪设备和你用Ffltter开发的应用程序上实现一个文件传输协议.这是因为没有默认的BLE文件传输协议,需要从头开始开发适合您用例的定制协议.这不是一件微不足道的事情,但以下是一些帮助你入门的建议:

Sleep Tracking Device

您需要在睡眠跟踪设备上实现GATT服务器,以公开可读取/通知的数据.该设备需要是不断通告并愿意接受来自远程中央设备的传入连接的外围设备.

Flutter Application

Flutter 应用程序需要是可以向睡眠跟踪设备订阅(接收通知)和写入数据的GATT客户端设备.它还需要是一个中央,这样它才能扫描并连接到睡眠跟踪设备.

Implementation

当您的设备需要从睡眠跟踪设备读取数据时,它首先需要使用以下扫描功能找到它:-

// Start scanning
flutterBlue.startScan(timeout: Duration(seconds: 4));

// Listen to scan results
var subscription = flutterBlue.scanResults.listen((results) {
    // do something with scan results
    for (ScanResult r in results) {
        print('${r.device.name} found! rssi: ${r.rssi}');
    }
});

// Stop scanning
flutterBlue.stopScan();

如果发现睡眠跟踪设备是扫描列表的一部分,则Flutter 应用程序需要使用以下功能连接到它:-

// Connect to sleep tracking device
await device.connect();

然后,需要使用以下功能启用通知:-

await characteristic.setNotifyValue(true);
characteristic.value.listen((value) {
    // do something with new value
});

然后,您需要写入睡眠跟踪设备上的特征,以告诉它您已准备好接收来自它的数据.您可以使用以下功能完成此操作:-

// Writes to a characteristic
await c.write([0x10, 0x01])

请注意,以上只是一个示例.特征可能具有不同的句柄,因此上面的两个值将不同.

在睡眠跟踪设备上,一旦触发Flutter 应用程序准备接收文件的事件,睡眠跟踪设备需要分块.bin数据并将其作为BLE通知在BLE上传输.这些通知的实现将取决于睡眠跟踪设备上运行的操作系统/软件,所以我不会在这里分享代码.

最后,请注意,这是通过BLE在两个设备之间传输文件的非常简化的实施.可以通过优化吞吐量和适当的流量控制机制来改进实现,但这超出了这个问题的范围.

您可以通过以下链接找到更多信息:-

Flutter相关问答推荐

Flutter 中不存在URI的目标

ProviderContainer和GoRouter

允许冻结在初始化时使用工厂

在Flutter 中创建自定义Snackbar类

Flutter 蜂窝-检索非基元数据类型列表

从外部类动态更改IconButton的图标

如何使DropDownMenu宽度等于TextFormfield?

播放特定持续时间Flutter 的音频

dotenv:未处理的异常:FileNotFoundError的实例

找不到任何与 com.google.firebase:firebase-sessions:[15.0.0, 16.0.0) 匹配的版本

无法在 Flutter 项目中安装最新版本的 image_picker

网页浏览器不支持鼠标滚动的行项目

为什么我们需要使用ChangeNotifierProvider而不是仅仅使用ChangeNotifier?

更改 flutter listview 中的布局

Agora VideoCall 不显示远程视频网格

如何在 Flutter 执行通知时运行后台代码?

如何在 Flutter 中创建 Facebook 创建帖子屏幕?

在 Flutter 应用程序中全局使用 assets 文件夹

参数类型MaterialPageRoute不能分配给参数类型String

Flutter audioplayers错误-单击音频按钮时不播放音频