当我锁定屏幕蓝牙时遇到问题,它没有收到数据,但仍在扫描我使用 flutter_blue_plus 1.32.4 和 flutter_background_service 5.0.5 请帮助我
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<!-- legacy for Android 11 or lower -->
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
<!-- legacy for Android 9 or lower -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="28" />
如果您使用协程来处理接收到的蓝牙数据,那么如果您的设备被锁定,协程将无法运行。协程需要前台状态。
您可以使用 Google 的 WorkManager 来管理后台。因此,如果您的设备被锁定,所有蓝牙数据都会在其中进行处理和管理。
https://developer.android.com/develop/background-work/background-tasks/persistent/getting-started
请注意,自 Android 8 起,后台进程可以运行的时间有限制(目前最长为 10 分钟)。