Android蓝牙适配器getRemoteDevice被缓存

时间:2017-03-16 16:23:10

标签: android bluetooth

我正在开发一个Android应用程序,我使用Bluetooth Low Energy。 我的代码逻辑包括使用BluetoothAdapter和方法getRemoteDevice(MAC-adddress)。

问题在于,当我使用这种方法时,Android似乎已经缓存了它。因为当我没有关闭或设备没有打开时,它仍然会创建具有名称的所有蓝牙设备对象。但我无法联系当场。

如何阻止Android缓存这个旧的BluetoothDevice?

我尝试用

进行反思

Method m = device.getClass().getMethod("removeBond", (Class[]) null); m.invoke(device, (Object[]) null);

但它不会产生任何更好的结果。

谢谢!

1 个答案:

答案 0 :(得分:0)

根据the documentation for getRemoteDevice

  

对于有效的硬件,将始终返回BluetoothDevice   地址,即使此适配器从未见过该设备。

所以,它没有缓存结果,它只是创建了一个愚蠢的BluetoothDevice对象,它不知道该MAC地址是否存在。

您可以尝试连接到设备的GATT服务,或者开始发现,或使用LE扫描程序对象,并使用适当的回调来检查连接是否成功。