2016-05-20 17 views
2

registrieren ich einen Empfänger für die AktionAndroid: wifi p2p deaktivieren Ereignis (nicht deaktiviert)

WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION 

In onReceive() ich diese Aktion erhalten und vergleichen Sie die EXTRA_WIFI_STATE auf diese beiden Fälle

case WifiP2pManager.WIFI_P2P_STATE_ENABLED: 

    case WifiP2pManager.WIFI_P2P_STATE_DISABLED: 

ich jedoch Sie müssen wissen, wann Wifi deaktiviert, aber noch nicht deaktiviert ist, um einige Methoden des WifiP2pManagers aufzurufen. Ich muss anrufen

manager.clearLocalServices 

bevor WiFi deaktiviert ist, sonst schlägt es fehl und der Dienst wird nicht entfernt. Wie kann ich das Ereignis "Deaktivierung" erhalten?

+0

Ich machte die Beobachtung, dass der Dienst entfernt wird, wenn WLAN deaktiviert wird. – p2pkit

+0

Warum können andere Geräte in der Nähe es noch sehen? – user3290180

+0

Wenn ich den Dienst lösche, wenn WiFi aktiviert ist, hören die anderen auf, es zu sehen. Aus diesem Grund muss ich das Ereignis "disabled" abfangen. – user3290180

Antwort

0

Ich denke, es gibt ein Missverständnis hier. Die meisten Apps, die Wifi Direct verwenden, suchen nach Peers und verwalten eine Liste verfügbarer Peers.

Sie werden jedoch oft feststellen, dass Implementierungen Peers nicht entfernen, wenn sie nicht mehr verfügbar sind. Wenn WifiP2pManager.WIFI_P2P_STATE_DISABLED definiert ist, ist das Gerät per Definition für andere Peers nicht mehr verfügbar. Daher haben alle Peers, die glauben, dass das Gerät noch verfügbar ist, wahrscheinlich nicht die Liste der "verfügbaren" Peers aktualisiert, dh sie haben nicht überprüft, welche Geräte noch verfügbar sind.

Um zu überprüfen, was das Verhalten wirklich ist, sollten Sie versuchen, nach dem Gerät zu suchen, NACHDEM sich der Status in WIFI_P2P_STATE_DISABLED geändert hat. Wenn Peers nach diesem Ereignis immer noch in der Lage sind, Ihr Gerät zu finden, gibt es in der Android-Implementierung einen grundlegenden Fehler, den ich bezweifle.

Verwandte Themen