2016-04-23 13 views
5

当您在Wi-Fi Direct中拨打discoverPeers时,它将返回PeerListListener中的onPeersAvailable方法的对等方列表(一旦您拨打requestPeers)。但是,当您拨打discoverServices时,您只能在方法DnsSdServiceResponseListener中一次获得一项服务。有谁知道是否有办法改变这种情况,并在给定的时间获得所有可用的服务?或者如果有一个特定的原因,为什么它一次只能返回一个?为什么Android Wi-Fi Direct只能通过discoverServices一次返回一项服务?

回答

1

据我所知,没有办法改变这种情况。他们只是一个接一个,而且时机也不是真的。

总而言之,提出的处理全部问题的方法是实现一个定时器,每当您发现时都会重置该定时器,并在发现之前触发它,您将确定所有对等服务都已发现。吮吸,但这是它的工作方式。

+0

要添加到此答案,我认为Android开发人员的逻辑是正确的。该设备已经发现了一项服务,因此您的应用程序会收到此新发现的服务的通知。但是,当调用PeerListListener回调时,onPeerAvailable方法会向您提供所有可用对等方的状态。 Wi-Fi P2P服务发现的超时时间为两分钟(https://sphen.proxmobil.com/android-wi-fi-direct-service-discovery/),因此您可以在两分钟内缓存发现的服务。 –

相关问题