我有一个可以在两部手机上运行的Wifi Direct Android应用程序。
当phone1
与phone2
相关联时,我希望phone1
充当client
而phone2
充当server
。< / p>
我使用了这段代码:
if (info.groupFormed && info.isGroupOwner) {
// start the server thread
} else if (info.groupFormed) {
// start the client thread
}
但问题是,有时phone1
启动了连接,我希望它充当客户端,它有时充当GroupOwner
,服务器线程在客户端启动电话。
我想确保phone2
始终充当GroupOwner
和server
。
答案 0 :(得分:8)
要将对等体设置为客户端,而不是每次GroupOWner
,我们必须指定:
config.groupOwnerIntent = 0;
答案 1 :(得分:3)
嗯,你能做的是:
@Override
public void connect(final WifiP2pDevice device) {
//obtain a peer from the WifiP2pDeviceList
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = device.deviceAddress;
config.wps.setup = WpsInfo.PBC;
config.groupOwnerIntent = 15; // I want this device to become the owner
mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
//success logic
Log.d(P2P, "connected to device " + device.deviceName);
}
@Override
public void onFailure(int reason) {
//failure logic
Log.d(P2P, "unable to establish connection to device " + device.deviceName);
}
});
}
请注意config.groupOwnerIntent = 15;
行。这告诉WifiP2pConfig我们说明连接的设备更有可能成为GroupOwner。
文档here
希望它有所帮助。
答案 2 :(得分:1)
我已就此link给出了答案。它一定会帮到你。