Я хотел бы знать, как я могу изменить сведения об устройстве интерфейса WiFi Direct устройства Android (например, имя интерфейса). Я разрабатываю приложение, которое использует технологию Bluetooth или WiFi Direct для беспроводной связи, и оно подключается только к устройствам, названным с определенным префиксом, чтобы различать те устройства, на которых работает мое приложение, относительно тех, у которых есть только интерфейс (я знаю, что это наивное решение... :)). Bluetooth позволяет манипулировать именем интерфейса с помощью методов setName(String name)
и getName()
, предоставляемых классом BluetoothAdapter
, но я считаю, что для WiFi Direct не существует соответствующих. Если это невозможно, как я могу отличить те устройства WiFi Direct, на которых запущено мое приложение, от тех, у которых включен только интерфейс? Любая помощь приветствуется. Спасибо.
Сведения об устройстве Android WiFi Direct
comment
Возможно, вам следует взглянуть на этот уже отвеченный вопрос: [Получить имя интерфейса WIFI на Android] [1] [1]: stackoverflow.com/questions/5980826/
- person Rémi F   schedule 18.05.2012
comment
Благодарю за ваш ответ! В этом вопросе они говорят о решении получить имя интерфейса Wifi на Android, тогда как я ищу решение, чтобы установить имя интерфейса Wifi Direct на Android!
- person user1399641   schedule 18.05.2012
comment
Возможно, вы захотите использовать обнаружение служб, подобное этому developer.android.com/ обучение/подключение устройств без проводов/
- person vjsailappan   schedule 24.10.2012
Ответы (1)
Прямое имя 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();
}
person
MM Manuel
schedule
27.04.2016