Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 661
Zach Avatar asked Nov 13 '22 21:11

Zach


1 Answers

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

like image 89
Milos Cuculovic Avatar answered Nov 15 '22 11:11

Milos Cuculovic