2013-09-16 2 views
1

J'essaie de coupler un périphérique directement à un autre périphérique à l'aide de la propre interface Wi-Fi d'Android.Problèmes de connexion directe Wi-Fi

Toutefois, j'ai des problèmes d'acceptation de l'invitation de groupe entrant provenant d'un périphérique similaire.

À partir du client, j'ai réussi à obtenir cette erreur:

09-16 13:42:07.547: E/WifiP2pService(511): Unhandled message { what=147487 when=-1ms  obj=network: null 
09-16 13:42:07.547: E/WifiP2pService(511): isGO: false 
09-16 13:42:07.547: E/WifiP2pService(511): GO: Device: 
09-16 13:42:07.547: E/WifiP2pService(511): deviceAddress: *CENSORED* 
09-16 13:42:07.547: E/WifiP2pService(511): primary type: null 
09-16 13:42:07.547: E/WifiP2pService(511): secondary type: null 
09-16 13:42:07.547: E/WifiP2pService(511): wps: 0 
09-16 13:42:07.547: E/WifiP2pService(511): grpcapab: 0 
09-16 13:42:07.547: E/WifiP2pService(511): devcapab: 0 
09-16 13:42:07.547: E/WifiP2pService(511): status: 4 
09-16 13:42:07.547: E/WifiP2pService(511): wfdInfo: null 
09-16 13:42:07.547: E/WifiP2pService(511): Client: Device: 
09-16 13:42:07.547: E/WifiP2pService(511): deviceAddress: *CENSORED* 
09-16 13:42:07.547: E/WifiP2pService(511): primary type: null 
09-16 13:42:07.547: E/WifiP2pService(511): secondary type: null 
09-16 13:42:07.547: E/WifiP2pService(511): wps: 0 
09-16 13:42:07.547: E/WifiP2pService(511): grpcapab: 0 
09-16 13:42:07.547: E/WifiP2pService(511): devcapab: 0 
09-16 13:42:07.547: E/WifiP2pService(511): status: 4 
09-16 13:42:07.547: E/WifiP2pService(511): wfdInfo: null 
09-16 13:42:07.547: E/WifiP2pService(511): interface: null 
09-16 13:42:07.547: E/WifiP2pService(511): networkId: -2 } 

Le GO (propriétaire du groupe) connecte en utilisant le code suivant:

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

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

        @Override 
        public void onSuccess() { 

         new FetchDeviceInfo().execute(device); 

        } 

        @Override 
        public void onFailure(int reason) { 
         // TODO Auto-generated method stub 
         Toast.makeText(getBaseContext(), "Failure to connect: " + reason, Toast.LENGTH_SHORT).show(); 


        } 
       }); 

Et l'exécution AsyncTask est juste pour aller chercher l'adresse IP du client.

+0

J'ai eu un problème similaire, même lors de la connexion à travers la connexion Wi-Fi page Paramètres directs. Cela peut être un bug dans l'implémentation de WiFi Direct. –

Répondre

0

Le protocole de négociation du propriétaire du groupe échouera si les deux périphériques veulent être le propriétaire du groupe (config.groupOwnerIntent == 15). Tout ce qui est en dessous a un bit de départage si l'intention de GO est la même et réussira.

La façon dont je connecter deux périphériques (en utilisant votre code) est la suivante:

WifiP2pConfig config = new WifiP2pConfig(); 
    config.deviceAddress = device.deviceAddress; 
    config.wps.setup = WpsInfo.PBC; 
    Random r = new Random(); 
    config.groupOwnerIntent = r.nextInt(14); 

    mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() { 
    ... 
+0

Intéressant! Je vais essayer plus tard :) – Mazze

+1

Je viens de découvrir que si elles sont liées et qu'elles ont moins de 15 ans, l'appel peut échouer. Les périphériques sont assignés au hasard à un bit de départage et si ce bit et l'intention GO sont les mêmes, cela échouera. Consultez le diagramme de négociation: [link] (http://patentimages.storage.googleapis.com/US20110225305A1/US20110225305A1-20110915-D00003.png) –