2012-05-16 166 views
4

我想知道如何更改Android設備的WiFi Direct接口的設備詳細信息(例如接口名稱)。 我正在開發一個應用程序,使用藍牙或Wi-Fi Direct技術進行無線通信,並且它僅連接到以特定前綴命名的設備,以區分正在運行我的應用程序的那些設備,尊重那些僅具有接口的設備(我知道這是一個天真的解決方案... :))。 藍牙許可證通過使用BluetoothAdapter類提供的setName(String name)getName()方法來操縱接口的名稱,但我相信對於WiFi Direct,不存在相應的方法。 如果這是不可能的,我怎麼能區分那些運行我的應用程序的WiFi Direct設備,尊重那些只有接口的設備? 任何幫助表示讚賞。 謝謝。Android WiFi Direct設備詳細信息

+0

也許你應該看看這個已經回答了問題:獲取Android上的WIFI接口名稱] [1 ] [1]:http://stackoverflow.com/questions/5980826/get-wifi-interface-name-on-android – buzeeg

+0

謝謝您的回覆! 在這個問題中,他們談到了一個在Android上獲取Wifi接口名稱的解決方案,而我正在尋找一種在Android上設置Wifi Direct接口名稱的解決方案! – user1399641

+0

您可能想要使用像這樣的服務發現http://developer.android.com/training/connect-devices-wirelessly/nsd.html – vjsailappan

回答

0

的直接Wi-Fi名稱是設備名稱,您可以通過以下方式進行更改:

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