2014-10-07 38 views
2

所以我有一個應用程序使用服務發現將多個設備連接到一臺主機。我首先設置一切,然後調用WifiP2pManager.discoverServices(..)。然後,一個設備選擇宣傳該服務(類似遊戲大廳)。其他設備發現它很好,可以連接沒有問題。無線直連組所有者意圖無法運作

當一臺設備已經託管服務並嘗試連接到已連接到其服務的設備(它形成了一個持久性組並忽略所有組擁有者意圖值)時,就會出現問題。 假設我們有一臺託管服務的設備A.另一個設備B連接到A,並且A是組所有者,並且在Wifi直接設置菜單中形成持久組。兩人都完成了使用該應用程序,並決定在以後再次使用它。現在B決定承擔這項服務。 A嘗試連接到B,但最終成爲組所有者,即使由於先前的持續連接B是託管服務的組織。 稍後,我將設備B的GOI(組主人意圖)設置爲15(主機),設備A的GOI設置爲0,並完全忽略它。編輯[其實我只是設置設備A的GOI,因爲只有一個設備調用連接。]

我的問題是:有什麼辦法從設置菜單中以編程方式刪除舊組?或者你有關於如何解決我的問題的另一個建議?

我嘗試過使用WifiP2pManager.createGroup(..)創建一個新組,並且暫時修復了組所有者問題,但是在啓動服務並連接兩次後使用同一設備連接到舊的已記住的組,並沒有出現連接到該程序。這可以通過不允許持久性組很容易地解決,但它似乎還沒有作爲一個選項。

回答

0

我遇到了類似的問題。我正在開發一個簡單的服務器客戶端應用程序,當我嘗試切換滾動時發生了同樣的問題。每當應用程序關閉時,我都會通過在服務器應用程序中調用removeGroup方法來解決此問題。這樣我確信這個團隊被移除了。

0

每當你groupOwnerIntent零見下圖:

WifiP2pConfig config = new WifiP2pConfig(); 
config.groupOwnerIntent = 0; 

然後,每當你想設備B從設備A連接則裝置A成爲客戶端和B設備成爲服務器,反之亦然只需要是不應該有任何小組都加入了記憶。這從設備設置不起作用,所以不要嘗試。您需要創建自己的自定義設置。

0

在應用關閉時使用mP2pManager.removeGroup()

P.S.我發現.groupOwnerIntent沒有實際意義。您將其設置爲要連接的設備。從文檔來看,它完全不清楚它是否屬於命令設備或命令設備連接