2013-03-01 3 views
6

Podczas tworzenia grupy za pośrednictwem Wi-Fi Direct wiem, że mogę utworzyć grupę trwałą.Czy mogę zmienić właściciela grupy w grupie trwałej w Wi-Fi Direct?

Moje pytanie brzmi: czy mogę utworzyć grupę trwałą, ale za każdym razem zmieniam właściciela grupy (tj. W każdej turze właściciel grupy będzie jednym z urządzeń w grupie).

Ponadto podczas tworzenia grupy trwałej wymagane jest zaakceptowanie połączenia tylko za pierwszym razem, prawda?

Odpowiedz

0

Zachowanie trwałości nie jest jeszcze obsługiwane w systemie Android Direct Direct.

+1

Teraz jest. Możliwe, że ta odpowiedź jest nieaktualna. –

+0

Więcej *** ironia *** nie była trwała, ale teraz, gdy została naprawiona, nie mogę jej usunąć, ponieważ jest ona NAPRAWDĘ trwała. – CrandellWS

3

Odpowiedź na pierwsze pytanie brzmi NIE. "Właściciel grupy P2P grupy P2P jest ustalany po utworzeniu grupy P2P i jest tym samym urządzeniem P2P w kolejnych sesjach grup P2P." Ta linia ze specyfikacji p2p mówi, że nie możesz "zmienić właściciela grupy.

Tak, wymagane jest zaakceptowanie połączenia po raz pierwszy. Grupa trwała umożliwia ponowne połączenie bez interwencji użytkownika.

+0

Punkty za faktyczne udzielenie odpowiedzi na zadane pytania, chociaż pomogło mi to-> http://stackoverflow.com/a/26242221/1815624 – CrandellWS

14

Możesz teraz utworzyć nową grupę trwałą przez WifiP2pManager.createGroup(..). Utworzy on nową grupę i utworzy właściciela grupy urządzeń wywołujących (A) i może zrobić to, co opisałeś. Jedyny problem polega na tym, że gdy utworzysz grupę i połączysz się z innym urządzeniem, to inne urządzenie (B) zapamięta tę konkretną grupę. Jeśli spróbujesz utworzyć nową grupę w A (powiedzmy, otwierając aplikację po raz drugi) i spróbujesz połączyć się z B, automatycznie przyłączy się do starej grupy i nie pojawi się tak, jakby była połączona w nowej grupie w A.

EDYCJA: Istnieje sposób na usunięcie wszystkich trwałych grup. Jest to ukryta funkcja o nazwie deletePersistentGroups. To jednak wymazuje każdą z nich, ale wydaje się, że jest to jedyny niezawodny sposób rozwiązania problemu. Zadzwoń do tego pod numerem WifiP2pManager.initialize(..), aby móc korzystać z kanału.

private void deletePersistentGroups(){ 
    try { 
     Method[] methods = WifiP2pManager.class.getMethods(); 
     for (int i = 0; i < methods.length; i++) { 
      if (methods[i].getName().equals("deletePersistentGroup")) { 
       // Delete any persistent group 
       for (int netid = 0; netid < 32; netid++) { 
        methods[i].invoke(wifiP2pManager, mChannel, netid, null); 
       } 
      } 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

Nie jestem pewien, dlaczego netid idzie w górę do 31, Przypuszczam, że jest to maksymalna liczba dozwolonych połączeń zapamiętane. Kod pobrany z here.

+0

Dziękuję, to zadziałało dla mnie: D –

+2

Wiem, że dziękuję, nie jesteś zachęcany, ale człowiek ma do powiedzenia "DZIĘKUJĘ" – CrandellWS

+0

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/wifi/java/android/net/wifi/p2p/WifiP2pManager.java# 1338 – CrandellWS

Powiązane problemy