2017-03-16 18 views
1

我開發一個Android應用程序,在這裏我用藍牙低能量。 我的代碼邏輯包括使用BluetoothAdapter和方法getRemoteDevice(MAC-地址經過)。的Android BluetoothAdapter getRemoteDevice緩存

的問題是,當我用這個方法,機器人似乎已經緩存它。因爲當我不靠近或者設備不在時,它仍然創建具有名稱和所有這些的BluetoothDevice對象。但我無法連接課程。

如何防止安卓從緩存這個老BluetoothDevice類?

我曾嘗試與反思

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

,但它不會產生任何更好的結果。

謝謝!

+0

相同的代碼工作完全對我很好。可能你需要在不同的品牌設備上進行測試。藍牙代碼在每個品牌上表現不同。 – 7383

+0

您是否最終找到了解決此問題的解決方案? –

+1

@IgorGanapolsky不,我還沒有找到任何解決方案。如果「找到」設備在限制內沒有響應,我最終使用超時功能中止連接。 –

回答

0

根據the documentation for getRemoteDevice

一個BluetoothDevice類將始終是一個有效的硬件 地址返回,即使該適配器從未見過該設備。

所以,它不緩存的結果,它只是創造一個愚蠢的BluetoothDevice類對象,它不知道,如果該MAC地址,甚至存在。

你可以嘗試連接到該設備的GATT服務,或者開始發現,或使用LE掃描對象,並使用適當的回調,以檢查是否連接成功與否。