javaandroidandroid-4.2-jelly-beanwifi-direct

WiFi Direct on Android not working properly


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


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