2012-05-29 29 views
6

Zauważyłem, że gdy sparowane urządzenie Bluetooth ma zmienioną nazwę, moje urządzenie z Androidem nie zawsze rejestruje zmianę nazwy. Nadal wyświetla starą nazwę urządzenia ... Nie jest to problemem dla niesparowanych urządzeń, więc domyślam się, że Android buforuje nazwy sparowanych urządzeń gdzieś.Jak programowo wyczyścić pamięć podręczną nazw Bluetooth w systemie Android?

Po rozejrzeniu się stwierdziłem, że jeśli rozparuję urządzenie i ręcznie wyczyści pamięć podręczną zapisaną w aplikacji "Bluetooth Share" mojego systemu Android, ten problem zniknie. Oczywiście problem prawdopodobnie powróci po ponownym sparowaniu urządzenia z moim Androidem.

TL; DR Jak wymusić na Androidzie pokazywanie zawsze najnowszej nazwy urządzenia Bluetooth?

Słyszałem coś o metodzie "fetchUuidsWithSdp", ale nie jestem pewien, jak jej użyć.

Odpowiedz

6

Tak, fetchUuidsWithSdp() jest dobrym pomysłem, ponieważ w przeciwieństwie do getUuids() zmusza urządzenie do próby połączenia się z urządzeniem docelowym i aktualizacji jego informacji na jego temat.

Oficjalne wsparcie dla fetchUuidsWithSdp zostało właśnie dodane w wersji 4.0.3, ale wcześniej było dostępne za pomocą refleksji.

public static void startFetch(BluetoothDevice device) { 
    // Need to use reflection prior to API 15 
    Class cl = null; 
    try { 
     cl = Class.forName("android.bluetooth.BluetoothDevice"); 
    } catch(ClassNotFoundException exc) { 
     Log.e(CTAG, "android.bluetooth.BluetoothDevice not found."); 
    } 
    if (null != cl) { 
     Class[] param = {}; 
     Method method = null; 
     try { 
      method = cl.getMethod("fetchUuidsWithSdp", param); 
     } catch(NoSuchMethodException exc) { 
      Log.e(CTAG, "fetchUuidsWithSdp not found."); 
     } 
     if (null != method) { 
      Object[] args = {}; 
      try { 
       method.invoke(device, args); 
      } catch (Exception exc) { 
       Log.e(CTAG, "Failed to invoke fetchUuidsWithSdp method."); 
      }    
     } 
    } 
} 

Zwykle rejestruje się w systemie android.bluetooth.device.action.UUID, ale zamiast tego należy zarejestrować się w celu zmiany nazwy.

Należy pamiętać, że jeśli zdecydujesz się zarejestrować dla akcji UUID, została ona błędnie wpisana przed API 15 jako "android.bleutooth.device.action.UUID" (zamienił e i u w bluetooth).

+0

Dziękuję bardzo – user1408996

+0

metoda ta odblokowana mój bluetooth więc mogę wysłać dane. wcześniej urządzenie BT nie odpowiadało. po zastosowaniu tego kodu usunąłem partnerstwo, a następnie ponownie go zainicjowałem. Posiadam adapter do drukarki bluetooth (chiński) oraz drukarkę punktową Epson LX 300 + II. wystawiam faktury. WIELE DZIĘKI !!! – mihai71

0

pamiętać ostatnie urządzenie, które mogę podłączyć zawsze zapisać adres MAC w pliku

Powiązane problemy