Я разрабатываю приложение для Android, основанное на использовании Wifi Direct API. Я зарегистрировался в своем Activity
a BroadcastReceiver
, чтобы получать уведомления о следующих событиях Wifi Direct: WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION
, WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION
, WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION
и WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION
.
Я считал, что любое изменение в списке сверстников (включение или исключение однорангового узла в диапазоне Wifi Direct) может вызвать BroadcastReceiver
. В моем приложении, когда новый одноранговый узел найден, его имя правильно включено в ListView
, но если одноранговый узел покидает беспроводной диапазон (или если отключить его интерфейс Wi-Fi), BroadcastReceiver
не вызывается (более конкретно, событие WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION
не запускается), а одноранговое имя остается в ListView
.
Я хотел бы знать, есть ли способ справиться с этой проблемой, поскольку имена одноранговых узлов включены в ListView
, но никогда не исключаются. Я уже думал о повторной инициализации экземпляров Channel и WifiP2pManager, но я считаю, что это отключит всех одноранговых узлов.