2012-10-04 29 views
4

我想開發一個應用程序,使用wifi直接在android果凍豆4.1.1。如果P2P啓用我immedialtely叫Android上的WiFi Direct無法正常工作

mManager.discoverPeers(mChannel, actionListener); 

之後,我收到一個電話回

onPeersAvailable(WifiP2pDeviceList) 

我有2三星(谷歌)的Nexus設備和WiFi直接測試已開啓兩個。但是這個回調會返回一個空的列表。但是,例如,如果我點擊默認WiFi直連接口上的搜索同行按鈕immedialtely第二設備將觸發

WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION

,這依次調用

onPeersAvailable(WifiP2pDeviceList peers) 

,因爲我正在請求同事使用

mManager.requestPeers(mChannel, WifiDirectService.this); 

這次我可以看到同伴。我多次看到這一點。

可能的原因是什麼? 感謝

回答

1

您應該使用發現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

+0

對不起,我用的是相同的。我更新了問題 – Zach

+0

你在做什麼然後成功? –

+0

我打電話給requestPeers。 – Zach