安卓WiFi Direct设备详细信息

4
我想知道如何更改Android设备的WiFi Direct接口的设备详细信息(例如接口名称)。我正在开发一个使用蓝牙或WiFi Direct技术进行无线通信的应用程序,它仅连接以特定前缀命名的设备,以区分那些运行我的应用程序的设备与那些仅开启了接口的设备(我知道这是一个天真的解决方案... :))。蓝牙允许使用BluetoothAdapter类提供的setName(String name)和getName()方法来操作接口的名称,但我认为WiFi Direct没有相应的方法。如果不可能更改名称,那么我该如何区分那些运行我的应用程序的WiFi Direct设备与那些仅开启了接口的设备?感谢任何帮助。

也许你应该看一下这个已经回答的问题:在Android上获取WIFI接口名称 - Rémi F
谢谢您的回复! 在那个问题中,他们谈到了如何在Android上获取Wifi接口名称的解决方案,而我正在寻找一种在Android上设置Wifi Direct接口名称的解决方案! - user1399641
你可能想要使用类似于这个的服务发现:http://developer.android.com/training/connect-devices-wirelessly/nsd.html - vjsailappan
1个回答

0

Wi-Fi Direct名称是设备名称,您可以通过以下方式更改:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接