2016-04-23 11 views
5

Quando si chiama discoverPeers in Wi-Fi Direct, viene restituito un elenco di peer al metodo onPeersAvailable nello PeerListListener (una volta chiamato requestPeers). Tuttavia, quando si chiama discoverServices, si ottiene un solo servizio alla volta per il metodo onDnsSdServiceAvailable nello DnsSdServiceResponseListener. Qualcuno sa se c'è un modo per cambiare questo e ottenere tutti i servizi disponibili in un dato momento? O se c'è una ragione particolare per cui può restituire solo uno alla volta?Perché Android Wi-Fi Direct restituisce solo un servizio alla volta con discoverServices?

risposta

1

Per quanto ne so, non c'è modo di cambiarlo. Sono dati solo uno per uno, e il tempismo non è davvero impostato.

Tutto sommato, il modo consigliato di gestirli tutti è quello di implementare un timer, che viene reimpostato ogni volta che si ottiene una scoperta, e si accendono prima che venga scoperta, si determinerebbe che tutti i servizi peer sono stati scoperto. Succhia, ma è così che funziona.

+0

Per aggiungere a questa risposta, penso che la logica degli sviluppatori Android sia corretta. Il dispositivo ha rilevato un servizio, pertanto l'applicazione viene notificata di questo servizio appena scoperto. Tuttavia, quando viene chiamato il callback PeerListListener, il metodo onPeerAvailable fornisce lo stato di tutti i peer disponibili. L'individuazione del servizio P2P Wi-Fi ha un timeout di due minuti (https://sphen.proxmobil.com/android-wi-fi-direct-service-discovery/), così puoi semplicemente memorizzare nella cache i servizi rilevati per quel periodo di due minuti. –