简体   繁体   中英

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM