问题
I am trying to develop an app using wifi direct in android Jelly Bean 4.1.1. If p2p is enabled I immedialtely call
mManager.discoverPeers(mChannel, actionListener);
After that I am getting a call back to the
onPeersAvailable(WifiP2pDeviceList)
I am testing with 2 Samsung(Google) Nexus device and wifi direct is turned on on both. But this call back is returning an empty list of peers. But for instance if I click on the Search Peers button on the default wifi direct interface immedialtely the second device fires the
WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION
and this inturn calls
onPeersAvailable(WifiP2pDeviceList peers)
as I am requesting for peers for that event using
mManager.requestPeers(mChannel, WifiDirectService.this);
This time I will be able to see the peers. I am seeing this for a number of times.
What could be the possible reason? Thanks
回答1:
You should use the Discovering peermethod:
manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
...
}
@Override
public void onFailure(int reasonCode) {
...
}
});
If the discovery process succeeds and detects peers, the system broadcasts the WIFI_P2P_PEERS_CHANGED_ACTION intent, which you can listen for in a broadcast receiver to obtain a list of peers. When your application receives the WIFI_P2P_PEERS_CHANGED_ACTION intent, you can request a list of the discovered peers with requestPeers().
For the full example, please check: http://developer.android.com/guide/topics/connectivity/wifip2p.html#discovering
来源:https://stackoverflow.com/questions/12729814/wifi-direct-on-android-not-working-properly