我正在开发一个Android应用程序,我使用Bluetooth Low Energy。 我的代码逻辑包括使用BluetoothAdapter和方法getRemoteDevice(MAC-adddress)。
问题在于,当我使用这种方法时,Android似乎已经缓存了它。因为当我没有关闭或设备没有打开时,它仍然会创建具有名称的所有蓝牙设备对象。但我无法联系当场。
如何阻止Android缓存这个旧的BluetoothDevice?
我尝试用
进行反思 Method m = device.getClass().getMethod("removeBond", (Class[]) null);
m.invoke(device, (Object[]) null);
但它不会产生任何更好的结果。
谢谢!
答案 0 :(得分:0)
根据the documentation for getRemoteDevice:
对于有效的硬件,将始终返回BluetoothDevice 地址,即使此适配器从未见过该设备。
所以,它没有缓存结果,它只是创建了一个愚蠢的BluetoothDevice对象,它不知道该MAC地址是否存在。
您可以尝试连接到设备的GATT服务,或者开始发现,或使用LE扫描程序对象,并使用适当的回调来检查连接是否成功。