2014-11-12 3 views
11

Я пытаюсь создать многопользовательскую игру для Android через WiFi напрямую. Для подключения к устройствам я следил за инструкциями по телефону http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html.Android WiFi Direct WIFI_P2P_PEERS_CHANGED_ACTION никогда не получал

ActionListener, который я использую с discoverPeers(), успешно возвращается, но тогда я никогда не получаю намерение WIFI_P2P_PEERS_CHANGED_ACTION, на которое я позвоню requestPeers(). Как ни странно, когда я вхожу в настройки WiFi напрямую на одном устройстве, другой может успешно обнаружить его через мое приложение. Мне нужно, чтобы мое устройство было обнаружено в моем приложении или что-то еще? Я не нашел ничего, что указывало бы на ресурсы разработчика Android в отношении WiFi P2P. Для открытия службы есть WiFi, но это совсем другое, не так ли?

+1

Такая же проблема здесь. Вы когда-нибудь выяснили, в чем проблема? – lostintranslation

+0

Ответ здесь немного устарел, но может показать вам, где искать: [Как получать уведомления о недоступности партнера в диапазоне Wi-Fi Direct?] (Http://stackoverflow.com/questions/21072081/ не как к-быть уведомлен-когда-а-пэр-это-не-более доступны-в-Wi-Fi-директ-диапазона). – Vikram

ответ

0

Вы добавили WIFI_P2P_PEERS_CANGED_ACTION в свой фильтр-приемник приемника вещания? Нам нужна дополнительная информация, чтобы помочь вам.

+0

Ну, да. Как я уже сказал, я следовал инструкциям на http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html. Я не уверен, какую другую информацию вы предоставляете. Я мог бы опубликовать код, но он выглядит так, как в официальном примере, так что это тоже не очень интересно. – cargath

0

Вы должны найти устройства в разделе Настройки/Wi-Fi/Direct Wifi/Доступные устройства

3

Вам необходимо запустить discoverPeers() на других устройствах, а также.
Теперь вы получите WIFI_P2P_PEERS_CHANGED_ACTION намерение

0

Я прошел через ту же проблему, как вы.

В этом случае было бы два фактора, способствующие этой проблеме. во-первых, событие никогда не происходило и не транслировалось другим. и, во-вторых, хотя событие произошло, фильтр намерения не поймает его.

В моем случае я обнаружил, что ресивер не получил событие должным образом. Причина была в том, что я не зарегистрировалReceiver для фильтра намерения правильно.

после я

intentFilter.addAction(WifiP2PManager.WIFI_P2P_PEERS_CHANGED_ACTION), 

Я не делал

ct.registerReceiver(bReceiver, intentFilter). 

кар является деятельность или контекст, и bReceiver является WifiDirectBroadcastReceiver. Вначале я написал

ct.registerReceiver(bReceiver, intentFilter), 

но, оно не было выполнено должным образом.

Я надеюсь, что это вам полезно

Смежные вопросы