2016-07-04 9 views
2

私はAndroid Wi-Fi Directサービスのディスカバリを使用しています。接続情報が利用可能な場合、グループが形成されている場合はグループ情報を要求します。何らかの理由で、クライアントとして接続すると、グループのオーナーをグループから取得できますが、クライアントのリストは空です。グループオーナーとして接続すると、グループオーナーとクライアントリストを取得できます。チャットの断片になると、私はグループの所有者とクライアントが誰であるかを表示しようとしています。もう1つの問題は、グループ所有者のデバイス名が空白に見えるが、残りの情報は正しい(アドレス行を削除した)ようだ。私はいくつかの異なる場所でグループ情報をリクエストしようとしましたが、クライアントとして接続するとクライアントリストを取得できません。私はSERVICE_CONNECTEDのインテントを受け取ったときにチャットの断片に切り替えます。クライアントとして接続すると、クライアントリストが空白になるのはなぜですか?

I/wfd_: Wi-Fi P2P Connection Changed 
I/wfd_: Connected to P2P network. Requesting connection info 
I/wfd_: Connection info available 
I/wfd_: WifiP2pInfo: 
I/wfd_: Group formed: true 
     Is group owner: false 
     Group owner address: /192.168.49.1 
I/wfd_: Stopping service discovery 
I/wfd_: Service discovery stopped 
I/wfd_: Connected as client 
I/wfd_: Requesting group info 
I/wfd_CommReceiver: This device changed 
I/wfd_ClientSocketHandler: Client socket thread running 
I/wfd_ClientSocketHandler: Opening client socket 
I/System.out: [CDS][DNS] getAllByNameImpl netId = 0 
I/System.out: [socket][0] connection /192.168.49.1:4545;LocalPort=34789(5000) 
I/System.out: [CDS]connect[/192.168.49.1:4545] tm:5 
I/wfd_: Service discovery requests cleared 
I/wfd_: Group info available 
I/wfd_: WifiP2pGroup: 
I/wfd_: Network name: DIRECT-Ig-BLU Clark 2 
     Is group owner: false 
     Group owner: 
     Device name: BLU Clark 2 
     Status: Unavailable 

     Client list is empty. 
/System.out: [socket][/192.168.49.117:34789] connected 
I/wfd_ClientSocketHandler: Client socket - true 
I/wfd_ClientSocketHandler: Launching the I/O handler 
I/wfd_CommReceiver: Service connected 
I/wfd_CommReceiver: Switching to Chat fragment 
I/wfd_: handleMessage() called 

グループの所有者として接続:

I/wfd_: Wi-Fi P2P Connection Changed 
I/wfd_: Connected to P2P network. Requesting connection info 
I/wfd_: Connection info available 
I/wfd_: WifiP2pInfo: 
I/wfd_: Group formed: true 
     Is group owner: true 
     Group owner address: /192.168.49.1 
I/wfd_: Stopping service discovery 
I/wfd_: Service discovery stopped 
I/wfd_: Connected as group owner 
I/wfd_OwnerSocketHandler: Group owner server socket started 
I/wfd_: Requesting group info 
I/wfd_OwnerSocketHandler: Group owner server socket thread running 
I/wfd_: Service discovery requests cleared 
I/wfd_CommReceiver: This device changed 
I/wfd_: Group info available 
I/wfd_: WifiP2pGroup: 
I/wfd_: Network name: DIRECT-XB-Brendan BLU 
     Is group owner: true 
     Group owner: 
     Device name: 
     Status: Unavailable 

     Client: 
     Device name: BLU Clark 2 
     Status: Connected 
I/wfd_CommReceiver: Service connected 
I/wfd_CommReceiver: Switching to Chat fragment 
I/wfd_OwnerSocketHandler: Launching the I/O handler 
I/wfd_: handleMessage() called 

コード:のWi-Fiダイレクトの貢献者のうちの1つによれば

@Override 
    public void onConnectionInfoAvailable(WifiP2pInfo wifiP2pInfo) { 
     Log.i(TAG, "Connection info available"); 

     Log.i(TAG, "WifiP2pInfo: "); 
     Log.i(TAG, p2pInfoToString(wifiP2pInfo)); 
     this.groupFormed = wifiP2pInfo.groupFormed; 
     this.isGroupOwner = wifiP2pInfo.isGroupOwner; 

     if (wifiP2pInfo.groupFormed) { 
      stopServiceDiscovery(); 

      Thread handler; 
      if (wifiP2pInfo.isGroupOwner) { 
       Log.i(TAG, "Connected as group owner"); 
       try { 
        handler = new OwnerSocketHandler(this.getHandler()); 
        handler.start(); 
       } catch (IOException e) { 
        Log.e(TAG, "Failed to create a server thread - " + e.getMessage()); 
        return; 
       } 
      } else { 
       Log.i(TAG, "Connected as client"); 
       handler = new ClientSocketHandler(this.getHandler(), wifiP2pInfo.groupOwnerAddress); 
       handler.start(); 
      } 

      Log.i(TAG, "Requesting group info"); 
      // Requests peer-to-peer group information 
      wifiP2pManager.requestGroupInfo(channel, new WifiP2pManager.GroupInfoListener() { 
       @Override 
       public void onGroupInfoAvailable(WifiP2pGroup wifiP2pGroup) { 
        Log.i(TAG, "Group info available"); 
        if (wifiP2pGroup != null) { 
         Log.i(TAG, "WifiP2pGroup:"); 
         Log.i(TAG, p2pGroupToString(wifiP2pGroup)); 
         WifiDirectHandler.this.wifiP2pGroup = wifiP2pGroup; 
        } else { 
         Log.w(TAG, "Group is null"); 
        } 
        localBroadcastManager.sendBroadcast(new Intent(Action.SERVICE_CONNECTED)); 
       } 
      }); 

     } else { 
      Log.w(TAG, "Group not formed"); 
     } 
     localBroadcastManager.sendBroadcast(new Intent(Action.DEVICE_CHANGED)); 
    } 

答えて

関連する問題