2013-03-01 14 views
6

Durante la creazione di un gruppo tramite Wi-Fi Direct, so che posso creare un gruppo permanente.Posso modificare il proprietario del gruppo in un gruppo persistente in Wi-Fi Direct?

La mia domanda è: posso creare un gruppo persistente, ma ogni volta cambiare il proprietario del gruppo (ad esempio, ogni volta che il proprietario del gruppo sarà uno dei dispositivi nel gruppo).

Inoltre, quando si crea un gruppo persistente, è necessario accettare la connessione solo la prima volta, giusto?

risposta

0

Il comportamento di persistenza non è ancora supportato nel framework diretto wifi Android.

+1

Ora lo è. È possibile che questa risposta sia obsoleta. –

+0

Altro *** ironia *** utilizzato per non persistere, ma ora che è stato risolto, non posso rimuoverlo perché è VERAMENTE persistente. – CrandellWS

3

La risposta alla prima domanda è NO. "Il proprietario del gruppo P2P di un gruppo P2P persistente è determinato quando il gruppo P2P è formato ed è lo stesso dispositivo P2P nelle successive sessioni del gruppo P2P." Questa linea dalle specifiche p2p dice che non puoi cambiare il proprietario del gruppo.

Sì, è necessario accettare la connessione appena la prima volta. Un gruppo permanente consente la riconnessione senza l'intervento dell'utente.

+0

Punti per rispondere effettivamente alle domande poste anche se ciò che mi ha aiutato è-> http://stackoverflow.com/a/26242221/1815624 – CrandellWS

14

È ora possibile creare un nuovo gruppo permanente tramite WifiP2pManager.createGroup(..). Creerà un nuovo gruppo e renderà il proprietario del gruppo chiamante (A) e può fare ciò che hai descritto. L'unico problema è quando crei un gruppo e ti connetti a un altro dispositivo, quell'altro dispositivo (B) ricorderà quel gruppo specifico. Se provi a creare un nuovo gruppo in A (ad esempio, aprendo l'app una seconda volta) e provi a connetterti da B, si unirà automaticamente al vecchio gruppo e non apparirà come se fosse connesso nel nuovo gruppo in A.

MODIFICA: C'è un modo per cancellare tutti i gruppi persistenti. È una funzione nascosta denominata deletePersistentGroups. Ciò cancellerà ogni singolo però, ma sembra essere l'unico modo affidabile per risolvere il tuo problema. Chiama questo dopo aver chiamato WifiP2pManager.initialize(..), in modo da poter utilizzare il canale.

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(); 
    } 
} 

io non sono molto sicuro perché il netid va fino al 31, presumo che questo è il numero massimo di connessioni memorizzate consentite. Codice preso da here.

+0

Grazie, questo ha funzionato per me: D –

+2

so che grazie non sei incoraggiato ma l'uomo ha avuto modo di dirlo "GRAZIE" – CrandellWS

+0

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

Problemi correlati