dart - Flutter Blue 示例无法通过扫描我的蓝牙 PC、其他 Android 手机和 iOS 进行查找
问题描述
Flutter Blue 无法找到我所有运行他们提供的示例应用程序的蓝牙设备。不显示错误消息。蓝牙适配器打开,所有设备都兼容 BLE。
https://gyazo.com/27f907034570f860997026ed295be026
我已经尝试通过外部 Android 工具配对设备并在不配对的情况下进行测试。未显示任何设备。
_Scan() {
print('STARTED');
if (!isScanning) {
print('SCANNING');
setState(() { isScanning = true; });
scanSubscription = flutterBlue.scan().listen((scanResult) {
print('Scan Result');
print('localName: ${scanResult.advertisementData.localName}');
print(
'manufacturerData: ${scanResult.advertisementData
.manufacturerData}');
print('serviceData: ${scanResult.advertisementData.serviceData}');
}, onDone: _StopScan);
}
}
示例应用程序执行其缓冲动画和未找到设备的停止。
预期的行为是查找设备并将它们作为列表打印在主应用程序屏幕上。
解决方案
在带有 --release 标志的设备上进行测试时,我遇到了这个问题。
显然,flutter blue 的缩小存在问题。有两种解决问题的方法,如本期所列:https ://github.com/pauldemarco/flutter_blue/issues/662
在 android/app/build.gradle 你可以禁用缩小:
android {
...
buildTypes {
release {
signingConfig signingConfigs.debug
shrinkResources false
minifyEnabled false
}
}
或者您可以创建一个防止flutter_blue最小化的proguard规则:在android/app/build.gradle中:
android {
...
buildTypes {
release {
signingConfig signingConfigs.debug
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
并在 android/app/proguard-rules.pro 中创建一个文件,其中包含以下内容:
-keep class com.pauldemarco.flutter_blue.** { *; }
推荐阅读
- android - 通过 Android Accessibility 服务关闭 PIP 窗口
- c++ - fastText WASM 不会
- python - 尝试将 xarray 保存到 netcdf 时出现 TypeError
- android - Ionic 5 android 添加自定义推送通知声音
- command-line-interface - 从 CLI 获取 MKS 中的更改包 ID
- git - git flyway脚本合并冲突检测
- regex - Ruby 提取滑动文本列
- python - 使用 Beautifulsoup 抓取网站
- reactjs - 使用 React useContext 时如何正确定义类型接口?
- javascript - 更改事件仅在复选框输入中触发一次