我正在制作一个移动应用程序,我正在做以下工作以从我的传感器获取数据。
- 在前台服务中运行BLE扫描。
- 检测蓝牙开关状态,自动启动和停止BLE扫描。
- 每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" />
但是,在运行时检查此权限并在未授予时请求它会更安全。有关如何在运行时向用户请求权限的更多信息,请参阅此页。