Flutter 应用需要检查蓝牙和位置是不是启用

Posted

技术标签:

【中文标题】Flutter 应用需要检查蓝牙和位置是不是启用【英文标题】:Flutter app needs to check if Bluetooth and Location enabledFlutter 应用需要检查蓝牙和位置是否启用 【发布时间】:2020-07-30 02:56:56 【问题描述】:

我正在使用 Flutter 应用程序,使用名为 flutter_blue 的 Dart 包连接到蓝牙设备。蓝牙设备连接成功,但前提是用户在其设备上启用了蓝牙和位置。我正在尝试找到一种方法来检测设备上是否启用了位置和蓝牙,然后再尝试连接,以便我可以提示用户打开它们。目前,我还在使用与原生 android 意图一起使用的 Dart 包来为每个意图显示设置菜单(也可以使用)。我只需要一种方法来检查它们是否已启用,以便我知道是否为用户显示设置菜单以启用它们。

【问题讨论】:

【参考方案1】:

我希望这仍然有用

您可以通过以下方式检查蓝牙是否启用:

Future<bool> _checkDeviceBluetoothIsOn() async 
    return await flutterBlue.isOn;
  

并检查是否使用PermissionHandler 包启用了位置:

Future<bool> _checkDeviceLocationIsOn() async 
    return await Permission.locationWhenInUse.serviceStatus.isEnabled;
  

【讨论】:

【参考方案2】:

我正在处理与您实际相同的情况,我检查它的方式是使用以下内容:

为了检查蓝牙激活,你可以监听flutter blue库提供的状态流,你可以像下面这样访问它:

FlutterBlue.instance.state 

对于位置,我没有找到一种“原生的颤动方式”来做到这一点,所以我使用了地理定位器包,它使您能够检查位置是否处于活动状态。

它为您提供了一个未来,它可以解析为布尔值,即 true 表示活动,false 表示禁用。

Geolocator().isLocationServiceEnabled()

【讨论】:

以上是关于Flutter 应用需要检查蓝牙和位置是不是启用的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Google Play 服务中弹出启用蓝牙提示?

检查蓝牙是不是在 Android 上处于活动状态?

iOS : Homekit - 如何检测设备中是不是启用蓝牙和 WiFi 服务?

除了代码之外,是不是可以检查位置是不是已启用?

检查蓝牙状态

检查是不是启用了“访问我的位置” - Android