Android WiFi Direct WIFI_P2P_PEERS_CHANGED_ACTION не получил

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

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ответ 4

Я столкнулся с той же проблемой, что и вы.

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

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

после

intentFilter.addAction(WifiP2PManager.WIFI_P2P_PEERS_CHANGED_ACTION), 

Я не делал

ct.registerReceiver(bReceiver, intentFilter).

ct - активность или контекст, и bReceiver - WifiDirectBroadcastReceiver. Сначала я написал

ct.registerReceiver(bReceiver, intentFilter),

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

Надеюсь, это вам поможет.