Android 14 WifiP2P Peer Discovery не может найти узлы, если не открыты настройки Wi-Fi.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android 14 WifiP2P Peer Discovery не может найти узлы, если не открыты настройки Wi-Fi.

Сообщение Anonymous »

Я разрабатываю сопутствующее приложение для Android (используя Flutter с собственным Kotlin), которому необходимо подключиться к определенному устройству Wi-Fi Direct.
Проблема: На Android 14 (в частности, устройстве Vivo) wifiP2pManager.discoverPeers() вызывает return onSuccess, но:
  • PEERS_CHANGEDШироковещательная рассылка часто не принимается.
  • Даже при получении список узлов пуст или содержит старые кэшированные узлы.
  • В тот момент, когда я вручную открываю страницу настроек системы «Wi-Fi» или «Wi-Fi Direct» на телефоне, узел немедленно обнаруживается, и мое приложение успешно подключается.
Это отлично работает на устройстве Samsung (Android 12) и более старых версиях Android.
Моя цель: надежно обнаружить и подключиться к P2P-устройству программно не, требуя от пользователя вручную открывать настройки Wi-Fi.
На самом деле проблем с подключением нет, но проблема в том, что он вообще не находит ближайший узел, пока не будет настроена настройка Wi-Fi. открылся.
Что я пробовал (и не удалось):
  • Обходной путь: сначала запустить обычное сканирование Wi-Fi: я попробовал вызвать wifiManager.startScan() перед
    discoverPeers(), чтобы «разбудить» подсистему.
    // Trying to wake up the radio

    wifiManager.startScan()

    Handler().postDelayed({

    wifiP2pManager.discoverPeers(...)

    }, 500)
Результат: Не удалось устранить проблему P2P.
  • Агрессивное повторное обнаружение: Я пробовал вызывать stopPeerDiscovery и
discoverPeers в цикле каждые 10 секунд. Результат: Без изменений. По-прежнему требуется ручное вмешательство.
  • Шаблон «Сброс». Я реализовал процесс полного сброса, при котором закрываю WifiP2pManager.Channel и повторно инициализирую его, если время обнаружения истекло.
channel?.close()

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»