Pau*_*aul 6 dart bluetooth-lowenergy flutter
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);
}
}
Run Code Online (Sandbox Code Playgroud)
示例应用程序执行其缓冲动画并在未找到设备的情况下停止。
预期行为是查找设备并将它们打印为主应用程序屏幕上的列表。
我在使用 --release 标志的设备上进行测试时遇到了这个问题。
显然,颤动蓝色的缩小存在问题。有两种方法可以解决该问题,如本期所列: https: //github.com/pauldemarco/flutter_blue/issues/662
在 android/app/build.gradle 中你可以禁用 minifaction:
android {
...
buildTypes {
release {
signingConfig signingConfigs.debug
shrinkResources false
minifyEnabled false
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以创建一个 proguard 规则来防止 flutter_blue 最小化:在 android/app/build.gradle 中:
android {
...
buildTypes {
release {
signingConfig signingConfigs.debug
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
并使用以下内容在 android/app/proguard-rules.pro 创建一个文件:
-keep class com.pauldemarco.flutter_blue.** { *; }
Run Code Online (Sandbox Code Playgroud)