2016-05-08 6 views
0

Ich bin eine Anwendung implementieren, wo ich Geräte mit WiFi P2P entdecken und einige Daten über jedes erkannte Gerät aufzeichnen muss. Das Problem, das ich habe ist, dass, wenn ein Gerät von online nach offline geht, die WifiP2pDeviceList nicht aktualisiert wird, so dass es dieses Gerät entfernt. Aber wenn ein neues Gerät erkannt wird, wird es normalerweise zur Liste hinzugefügt. Also, was ist das Problem mit meinem Code?Android: Wifi P2P-Liste wird nicht richtig aktualisiert

Ich habe diesen Beitrag bereits gesehen (WIFI P2P discovery list is not getting refreshed?) und es unterscheidet sich von dem, was ich habe.

/** 
* A Table of devices that displays all peers and shows the corresponding 
* info about them. 
*/ 
public class DevicesTable extends Fragment implements PeerListListener { 

    protected static List<WifiP2pDevice> peers = new ArrayList<WifiP2pDevice>(); 
    View mContentView = null; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     mContentView = inflater.inflate(R.layout.table, null); 
     return mContentView; 
    } 

    /** 
    * @return this device 
    */ 
    public WifiP2pDevice getDevice() { 
     return device; 
    } 

    @Override 
    public void onPeersAvailable(WifiP2pDeviceList newPeers) { 
     ClientActivity x = (ClientActivity) ClientActivity.context; 
     if (!x.wifiP2pScanThread.isScanning()) { 
      return; 
     } 
     peers.clear(); 
     peers.addAll(newPeers.getDeviceList()); 
     ArrayList<String> onlinemacs = new ArrayList<>(); 
     if (peers.size() == 0) { 
      Log.d(ClientActivity.TAG, "No devices found"); 
     } else { 
      for (WifiP2pDevice dev : peers) { 
       //do something 
      } 
     } 
    } 
} 

Antwort

0

Ich habe versucht, viele Alternativen vorschlagen Re-Initialisierung der wifip2pmanager und channel oder rufen peers.clear() aber keiner von ihnen arbeitete. Dann stieß ich auf diese (perfekte) explanation, was los ist, heißt es, dass die Liste nach einer bestimmten Zeitspanne (etwa eine Minute, es hängt vom Telefon) gelöscht wird und es gibt keine machbare Möglichkeit, dies zu tun mit der verfügbare Software. Beachten Sie, dass das manuelle Ein-/Ausschalten des Wifi die Liste (und fast alle anderen WLAN-Einstellungen) zurücksetzt, aber das ist überhaupt nicht praktikabel.

Kurz gesagt gibt es keine Möglichkeit, die bisher nicht verfügbaren Peers programmatisch zu löschen.

Verwandte Themen