在我的应用程序中,我使用信标名称进行工作。在信标名称更改后,有些人看到了正常,有些则看不到。他们显示旧名称。我发现设备中的蓝牙缓存存在问题。我该如何清除缓存? 我试过了:
public void btDevice(){
BluetoothDevice device = mbluetoothAdapter.getRemoteDevice(idKey);
device.fetchUuidsWithSdp();
但不成功。 我希望避免使用android.bluetooth,因为我希望每次设备都在范围内时避免提示配对。现在我使用altbeacon lib来管理信标。
答案 0 :(得分:0)
在Android上,操作系统从扫描响应中解析蓝牙名称。您几乎无法控制其工作原理 - 为设备检测到的最后一次蓝牙LE扫描响应与具有相同mac地址的设备的Android对象相关联。如果设备名称稍后更改,Android将继续报告旧名称,除非操作系统收到新的扫描响应。操作系统决定何时请求新的扫描响应,而不是应用程序代码。
如您所见,这些都不在您的控制范围内,并且无法保证。我不知道有关此方面的任何变通方法,并且避免对可能随时间变化的数据(如蓝牙名称)使用扫描响应。