2012-05-16 3 views
4

Je voudrais savoir comment je peux changer les détails de l'appareil de l'interface WiFi Direct d'un appareil Android (par exemple le nom de l'interface). Je développe une application qui utilise la technologie Bluetooth ou WiFi Direct pour les communications sans fil et elle se connecte uniquement aux périphériques nommés avec un préfixe particulier pour discriminer les périphériques qui exécutent mon application, par rapport à ceux qui ont seulement l'interface (je sais que c'est une solution naïve ... :)). Bluetooth permet de manipuler le nom de l'interface en utilisant setName(String name) et getName() méthodes fournies par BluetoothAdapter classe, mais je crois que n'existent pas les correspondants pour WiFi Direct. Si ce n'est pas possible, comment puis-je différencier les périphériques WiFi Direct qui exécutent mon application, par rapport à ceux sur lesquels seule l'interface est active? Toute aide est appréciée. Merci.Android WiFi Détails de l'appareil Direct

+0

Peut-être que vous devriez regarder cette question déjà répondu: [Obtenir le nom d'interface WIFI sur Android] [1 ] [1]: http://stackoverflow.com/questions/5980826/get-wifi-interface-name-on-android – buzeeg

+0

Merci pour votre réponse! Dans cette question, ils parlent d'une solution pour obtenir le nom de l'interface Wifi sur Android, alors que je suis à la recherche d'une solution pour définir le nom de l'interface Wifi Direct sur Android! – user1399641

+0

Vous pouvez utiliser une découverte de service comme celle-ci http://developer.android.com/training/connect-devices-wirelessly/nsd.html – vjsailappan

Répondre

0

Le nom le Wi-Fi est le nom du périphérique, vous pouvez le modifier par la manière suivante:

public void changeWiFiDirectName(final String newName){ 
Method m = null; 
try { 
    m = mManager.getClass().getMethod("setDeviceName", new Class[]{mChannel.getClass(), String.class, WifiP2pManager.ActionListener.class}); 
} catch (NoSuchMethodException e) { 
    e.printStackTrace(); 
} 
try { 
    if (m != null) { 
     m.invoke(mManager, mChannel,newName, new WifiP2pManager.ActionListener() { 

      @Override 
      public void onSuccess() { 
       Log.d(TAG, "Name changed to "+newName); 
      } 
      @Override 
      public void onFailure(int reason) { 
       Log.d(TAG, "The name was not changed"); 
      } 
     }); 
    } 
} catch (IllegalAccessException e) { 
    e.printStackTrace(); 
} catch (InvocationTargetException e) { 
    e.printStackTrace(); 
}