Question

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

Was it helpful?

Solution

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top