2014-11-12 17 views
11

Staram się stworzyć grę dla wielu graczy dla Androida za pośrednictwem WiFi direct. Postępowałem zgodnie z instrukcjami na http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html, aby połączyć się z urządzeniami.Android WiFi Direct WIFI_P2P_PEERS_CHANGED_ACTION nigdy nie otrzymał

ActionListener, którego używam z discoverPeers(), powraca pomyślnie, ale nigdy nie otrzymam intencji WIFI_P2P_PEERS_CHANGED_ACTION, od której będę nazywać requestPeers(). O dziwo, kiedy wchodzę do ustawień bezpośredniego systemu WiFi na jednym urządzeniu, drugi jest w stanie z powodzeniem wykryć go za pośrednictwem mojej aplikacji. Czy muszę umożliwić wykrywanie urządzenia w mojej aplikacji lub coś podobnego? Nie znalazłem niczego, co by wskazywało na to, że w zasobach dla programistów Androida chodzi o WiFi P2P. Wi-Fi jest przeznaczone do odkrywania usług, ale to coś zupełnie innego, prawda?

+1

Ten sam problem tutaj. Czy kiedykolwiek wyśledziłeś, o co chodziło? – lostintranslation

+0

Odpowiedź tutaj jest nieco przestarzała, ale może pokazać, gdzie szukać: [Jak uzyskać powiadomienie, gdy użytkownik nie jest już dostępny w zakresie Wi-Fi Direct?] (Http://stackoverflow.com/questions/21072081/ jak-być-powiadamiany-kiedy-a-peer-jest-nie-dłużej-dostępny-w-wi-fi-bezpośredni-zakres). – Vikram

Odpowiedz

0

Czy dodano WIFI_P2P_PEERS_CANGED_ACTION do filtra intencji odbiornika? Potrzebujemy więcej informacji, aby ci pomóc.

+0

Cóż, tak. Jak już powiedziałem, postępowałem zgodnie z instrukcjami na http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html. Nie jestem pewien, jakie inne informacje przekazać. Mógłbym napisać kod, ale wygląda jak ten w oficjalnym przykładzie, więc nie byłoby to zbyt interesujące. – cargath

0

Trzeba znaleźć urządzenia w obszarze Ustawienia/WiFi/Bezpośrednie Wifi/dostępnych urządzeń

3

Musisz uruchomić discoverPeers() na innych urządzeniach, jak również.
Teraz otrzymasz intencję WIFI_P2P_PEERS_CHANGED_ACTION

0

Przeszłam przez ten sam problem jak ty.

W takim przypadku dwa czynniki przyczyniłyby się do tego problemu. Po pierwsze, wydarzenie nigdy nie miało miejsca i nie było transmitowane innym osobom. i po drugie, mimo że wystąpiło zdarzenie, filtr intencji nie przechwycił go.

W moim przypadku stwierdziłem, że odbiornik nie pobiera zdarzenia prawidłowo. powodem było to, że nie zarejestrowałem prawidłowo programu Relief do filtra intencji.

po robię

intentFilter.addAction(WifiP2PManager.WIFI_P2P_PEERS_CHANGED_ACTION), 

nie zrobiłem

ct.registerReceiver(bReceiver, intentFilter). 

CT działalności lub kontekst, a bReceiver jest WifiDirectBroadcastReceiver. Najpierw napisałem:

ct.registerReceiver(bReceiver, intentFilter), 

, ale nie został poprawnie wykonany.

Mam nadzieję, że to ci pomoże