2013-09-26 43 views
4

我正在嘗試創建一個帶有3臺平板電腦的WI-FI Direct網絡。我想運行WiFi-Direct作爲後臺服務,將一臺設備設置爲自主GO。有人可以告訴我這怎麼可以在Android中完成?還有人請告訴我,我們如何設置專用的SSID和密碼,以便每當新設備添加到此網絡時,他們都可以在應用程序啓動期間搜索特定的ssid和密碼以建立連接。如何使用專用的ssid和密碼短語在Android中爲Wifi Direct創建自主GO?

我使用的是Android API等級18對我的發展...

在此先感謝...

+1

有人請回答這個問題。即使我想知道如何做到這一點......我試圖在android中創建永久wifi直接組,當我有一個設備將永遠是組所有者。我試圖創建一個帶有5個設備的p2p組,其中一個設備始終作爲組所有者。第一次,我可以創建一個組,但是在隨後的連接中,我希望組可以使用可用的設備和先前的組所有者作爲當前組所有者。我們如何在android中做到這一點?請幫忙... – user2644440

回答

6

這是一個獨立的集團用戶是如何使用,即下面的代碼,你可以故意設置一個創建設備wifi直連網絡作爲一個集團的所有者

manager.createGroup(channel,new WifiP2pManager.ActionListener() 
{ 
    @Override 
    public void onSuccess() 
    { 
     Toast.makeText(WiFiDirectActivity.this, "Group Created",Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onFailure(int reason) 
    {}    
}); 

您可以像按鈕任何情況下使用此代碼點擊等

0

通常,羣組擁有者由WiFi Direct協議決定。 但是,您可以使用配置類強制它。

final WifiP2pConfig config = new WifiP2pConfig(); 
        config.deviceAddress=myDeviceAddr; 
        config.wps.setup = WpsInfo.PBC; 
        config.groupOwnerIntent =15; 

在這種情況下,我認爲我在說,15是指最有可能成爲GO是正確的,你如果你希望該設備是GO設置此爲零。 此外,這可能是你可以設置引腳等看看WpsInfo。 此配置信息然後傳遞到您的連接調用。

mManager.connect(mChannel, config, new WifiP2pManager.ActionListener(). 

希望這會有所幫助。

+0

你的迴應幾乎是正確的。但0最不可能成爲GO,最不可能成爲15。 http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig.html#groupOwnerIntent –

2

Bluemoon10幾乎是正確的。我還不能評論,因爲我需要50點聲望:/。 config.groupOwnerIntent的範圍是1-15,最高意圖是組所有者。 如果2個設備試圖連接兩個GO意圖== 15,則連接調用將失敗。如果GO意圖聯繫低於15,那麼這些設備就決定一個聯絡中斷位並達成一致。所以如果你想讓一個設備成爲羣組所有者,你必須確保它是唯一試圖成爲的羣體。您可以通過服務發現來完成此任務,即如果有服務正在運行,您的GO意圖將設置爲具有服務的設備上的15和連接設備上的1。只有一個設備需要調用連接來啓動連接。

鏈接服務發現教程:http://developer.android.com/training/connect-devices-wirelessly/nsd-wifi-direct.html

2

要創建自主組你可以調用從你的經理createGroup()方法。爲了設置SSID口令您必須調用WifiP2pGroup 類的隱藏方法setPassphrasesetNetworkName

爲了達到這個目的,你使用java反射。試試下面的例子。我們假設WifiP2pGroup將您當前的對象組分組。

方法

setPassPhraseMethod=group.getClass().getMethod("setPassphrase", new Class[ {String.class}); 

,現在你調用方法:

setPassPhraseMethod.invoke(group, "yourNewPassPrhase"); 

希望這是有幫助的。

+1

檢查源代碼並自己對其進行測試,這將改變內部成員,但它不會對該組本身。 – Jared

+0

@Jared測試結果是什麼? –

相關問題