2016-07-04 7 views
2

Ich verwende Android Wi-Fi Direct-Dienstentdeckung. Wenn Verbindungsinformationen verfügbar sind, fordere ich Gruppeninformationen an, wenn eine Gruppe gebildet wird. Aus irgendeinem Grund, wenn ich als Client verbinden, kann ich den Gruppenbesitzer aus der Gruppe abrufen, aber die Client-Liste ist leer. Wenn ich mich als Gruppenbesitzer verbinde, kann ich den Gruppenbesitzer und die Kundenliste abrufen. Wenn ich zum Chatfragment komme, versuche ich zu zeigen, wer der Gruppenbesitzer und die Kunden sind. Ein weiteres Problem ist, dass der Gerätename des Gruppenbesitzers leer zu sein scheint, aber der Rest der Informationen korrekt ist, wie die Adresse (ich habe die Adresszeilen entfernt). Ich habe versucht, Gruppeninformationen an ein paar verschiedenen Orten anzufordern, und ich kann die Clientliste nie abrufen, wenn ich als Client verbunden bin. Ich wechsle zum Chatfragment, wenn ich die Absicht erhalte.Warum ist die Clientliste leer, wenn ich mich als Client anmelde?

Connecting als Client:

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 

Anschluss als Gruppeneigentümer:

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 

Code:

@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)); 
    } 

Antwort

Verwandte Themen