我正在尝试使用Wifi Direct连接两个设备,但我想以编程方式实现,而不是由用户启动.
为此,我必须更改设备的WifiDirect的名称,如下图所示:

现在使用以下方法发现对等体:
wifiP2pManager.discoverPeers(channel,
new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Log.d(TAG, "onSuccess");
}
@Override
public void onFailure(int reason) {
Log.d(TAG, "onFailure");
}
});
Run Code Online (Sandbox Code Playgroud)
通过以下代码连接到特定对等体:
public static void connectPeer(WifiP2pDevice device,
WifiP2pManager manager, Channel channel, final Handler handler) {
WifiP2pConfig config = new WifiP2pConfig();
config.groupOwnerIntent = 15;
config.deviceAddress = device.deviceAddress;
config.wps.setup = WpsInfo.PBC;
manager.connect(channel, config, new ActionListener() {
@Override
public void onSuccess() {
}
@Override
public void onFailure(int reason) {
}
});
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何更改Wi-Fi Direct的设备名称?
我正在尝试创建一个具有自定义名称的 WiFi Direct 组。但在探索了所有选项之后,我发现我们无法更改名称,并且 Android 操作系统自行决定WiFi Direct 组的名称
我什至尝试使用Reflection来实现相同的目的,但它在Android Nougat 及更高版本上不起作用。
我使用以下代码创建 WiFi Direct 组:
WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
WifiP2pManager.Channel channel = manager.initialize(this, getMainLooper(), null);
manager.createGroup(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Toast.makeText(getApplicationContext(), "Group Created", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int i) {
Toast.makeText(getApplicationContext(), "Group Creation Failed", Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
但是当我尝试 PDANet+ 应用程序时,他们能够创建一个带有后缀 PDANet 的 WiFi Direct 组名称。
例如:
我的应用程序生成以下组名称:DIRECT-mq-ONEPLUS
而 PDANet 生成:DIRECT-Dj-ONEPLUS A6000-PdaNet
所以我想知道他们如何将后缀添加到 WiFi Direct 组名称中。如果有人能在这方面帮助我,那将会有很大帮助。!
谢谢。!