5

我正在尝试在 android Jelly Bean 4.1.1 中使用 wifi direct 开发一个应用程序。如果启用了 p2p,我会立即致电

mManager.discoverPeers(mChannel, actionListener);

之后,我接到回电

onPeersAvailable(WifiP2pDeviceList)

我正在使用 2 个 Samsung(Google) Nexus 设备进行测试,并且 wifi direct 都已打开。但是这个回调返回的是一个空的对等点列表。但是例如,如果我立即单击默认 wifi 直接接口上的Search Peers按钮,第二个设备就会触发

WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION

而这反过来调用

onPeersAvailable(WifiP2pDeviceList peers)

因为我正在使用该事件请求同行

mManager.requestPeers(mChannel, WifiDirectService.this);

这一次我就能看到同行了。我多次看到这个。

可能的原因是什么?谢谢

4

1 回答 1

1

您应该使用 Discovering peermethod:

manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
    @Override
    public void onSuccess() {
        ...
    }

    @Override
    public void onFailure(int reasonCode) {
        ...
    }
});

如果发现过程成功并检测到对等点,系统会广播 WIFI_P2P_PEERS_CHANGED_ACTION 意图,您可以在广播接收器中侦听该意图以获取对等点列表。当您的应用程序收到 WIFI_P2P_PEERS_CHANGED_ACTION 意图时,您可以使用 requestPeers() 请求已发现对等点的列表。

有关完整示例,请查看:http: //developer.android.com/guide/topics/connectivity/wifip2p.html#discovering

于 2012-10-04T14:46:21.493 回答