Ответ 1
Вам нужно запустить discoverPeers()
на других устройствах.
Теперь вы получите намерение 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 непосредственно для обнаружения сервисов, но что-то еще, не так ли?
Вам нужно запустить discoverPeers()
на других устройствах.
Теперь вы получите намерение WIFI_P2P_PEERS_CHANGED_ACTION
Вы добавили WIFI_P2P_PEERS_CANGED_ACTION в свой фильтр-приемник радиоприемника? Нам нужна дополнительная информация, чтобы помочь вам.
Вам нужно найти устройства в разделе "Настройки/Wi-Fi/Direct Wifi/Доступные устройства"
Я столкнулся с той же проблемой, что и вы.
В этом случае было бы два фактора, способствующих этой проблеме. во-первых, событие никогда не происходило и не транслировалось другим. и во-вторых, хотя событие произошло, фильтр намерения не поймал его.
В моем случае я обнаружил, что приемник не получает событие должным образом. причина была в том, что я не зарегистрировалReceiver для фильтра намерения правильно.
после
intentFilter.addAction(WifiP2PManager.WIFI_P2P_PEERS_CHANGED_ACTION),
Я не делал
ct.registerReceiver(bReceiver, intentFilter).
ct - активность или контекст, и bReceiver - WifiDirectBroadcastReceiver. Сначала я написал
ct.registerReceiver(bReceiver, intentFilter),
но он не был выполнен должным образом.
Надеюсь, это вам поможет.