如何知道android的BLE扫描状态?



我正在制作一个移动应用程序,我正在做以下工作以从我的传感器获取数据。

  1. 在前台服务中运行BLE扫描。
  2. 检测蓝牙开关状态,自动启动和停止BLE扫描。
  3. 每3分钟重新启动BLE扫描(我在某处读到BLE扫描在运行超过15分钟时自动停止)。所以为了安全起见,我每3分钟重新启动一次。

我使用下面的语句

启动/重新启动扫描
scanner.startScan(scanFilters,scanSettings,callback);

我使用下面的语句

停止扫描
scanner.stopScan(callback);

scanFilters中,我设置了设备ID的名称,在scanSettings中,我将扫描模式设置为LOW_LATENCY

这个应用程序大部分时间工作正常。但有时我的客户会抱怨,即使蓝牙和定位功能打开了,也没有数据更新。传感器工作正常。启动蓝牙LE扫描时,如何确保扫描是否正在运行?我可以在任何地方获得扫描是否运行的状态。

既然您说这种情况只发生在某些客户身上,那么您的问题可能另有原因。

BLE需要ACCESS_FINE_LOCATION权限才能在Android 8.0以下版本的设备上工作。更高版本可以使用设备伴侣配对。你可以像这样在你的应用程序清单文件中添加Permission:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

但是,在运行时检查此权限并在未授予时请求它会更安全。有关如何在运行时向用户请求权限的更多信息,请参阅此页。

最新更新