2013-03-01 4 views
6

Wi-Fi Direct経由でグループを作成する場合、私は永続的なグループを作成できることを知っています。Wi-Fi Directの固定グループ内のグループオーナーを変更できますか?

私の質問は永続的なグループを作成できますが、そのたびにグループオーナーを変更します(つまり、グループのオーナーはグループ内のデバイスの1つになります)。

また、永続的なグループを作成する場合は、最初に接続を受け入れる必要がありますか?

答えて

0

アンドロイドwifiの直接フレームワークでは、永続性の動作はまだサポートされていません。

+1

今です。この回答は古くなっている可能性があります。 –

+0

詳細***皮肉***それは永続的ではありませんでしたが、固定されているので、本当に永続的なので削除できません。 – CrandellWS

3

あなたの最初の質問に対する回答はNOです。 "永続的なP2PグループのP2Pグループ所有者は、P2Pグループが形成されたときに決定され、後続のP2Pグループセッションでは同じP2Pデバイスになります。 p2p仕様のこの行は、グループの所有者を変更できないことを示しています。

はい、接続を初めて受け入れることが必要です。永続的なグループは、ユーザーの介入なしに再接続を許可します。

+0

本当に尋ねられた質問に答えるためのポイント - > http://stackoverflow.com/a/26242221/1815624 – CrandellWS

14

WifiP2pManager.createGroup(..)で新しい固定グループを作成できるようになりました。それは、新しいグループを作成し、呼び出し側のデバイス(A)グループの所有者を作成し、あなたが説明したことを行うことができます。唯一の問題は、グループを作成して別のデバイスに接続し、その別のデバイス(B)が特定のグループを覚えていることです。 Aで新しいグループを作成しようとすると(2回目にアプリケーションを開く)、Bから接続しようとすると、自動的に古いグループに参加し、Aの新しいグループに接続されているように見えなくなります。

EDIT: 永続的なグループをすべて消去する方法があります。 deletePersistentGroupsと呼ばれる隠し機能です。しかしこれはすべてのものを一掃しますが、あなたの問題を解決する唯一の信頼できる方法であるようです。 WifiP2pManager.initialize(..)に電話した後に電話をかけてください。そのため、チャンネルを使用できます。私はnetidは31に上がる理由はかなりわからない

private void deletePersistentGroups(){ 
    try { 
     Method[] methods = WifiP2pManager.class.getMethods(); 
     for (int i = 0; i < methods.length; i++) { 
      if (methods[i].getName().equals("deletePersistentGroup")) { 
       // Delete any persistent group 
       for (int netid = 0; netid < 32; netid++) { 
        methods[i].invoke(wifiP2pManager, mChannel, netid, null); 
       } 
      } 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

は、私はそれが許さ思い出し接続の最大数であることを前提としています。コードはhereから取得しました。

+0

ありがとう、これは私のために働いた:D –

+2

私はあなたには奨励されていない男はそれを "ありがとう"と言わなければなりません – CrandellWS

+0

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/wifi/java/android/net/wifi/p2p/WifiP2pManager.java# 1338 – CrandellWS

関連する問題