Проблема: На Android 14 (в частности, устройстве Vivo) wifiP2pManager.discoverPeers() вызывает return onSuccess, но:
- PEERS_CHANGEDШироковещательная рассылка часто не принимается.
- Даже при получении список узлов пуст или содержит старые кэшированные узлы.
- В тот момент, когда я вручную открываю страницу настроек системы «Wi-Fi» или «Wi-Fi Direct» на телефоне, узел немедленно обнаруживается, и мое приложение успешно подключается.
Моя цель: надежно обнаружить и подключиться к P2P-устройству программно не, требуя от пользователя вручную открывать настройки Wi-Fi.
На самом деле проблем с подключением нет, но проблема в том, что он вообще не находит ближайший узел, пока не будет настроена настройка Wi-Fi. открылся.
Что я пробовал (и не удалось):
- Обходной путь: сначала запустить обычное сканирование Wi-Fi: я попробовал вызвать wifiManager.startScan() перед
discoverPeers(), чтобы «разбудить» подсистему.
// Trying to wake up the radio
wifiManager.startScan()
Handler().postDelayed({
wifiP2pManager.discoverPeers(...)
}, 500)
- Агрессивное повторное обнаружение: Я пробовал вызывать stopPeerDiscovery и
- Шаблон «Сброс». Я реализовал процесс полного сброса, при котором закрываю WifiP2pManager.Channel и повторно инициализирую его, если время обнаружения истекло.
channel = manager?.initialize(...)
Результат: Без изменений.
- Разрешения: (предоставлено)
- NEARBY_WIFI_DEVICES
- ACCESS_FINE_LOCATION
- CHANGE_WIFI_STATE
- ACCESS_WIFI_STATE
- INTERNET
AndroidManifest.xml:
\
\
\
\
\
Подробнее здесь: https://stackoverflow.com/questions/798 ... ings-is-op
Мобильная версия