3

我开发了一个 WiFi Direct 应用程序,并使用此代码来区分 groupOwner 和其他设备。但是 groupOwner 总是随机生成的。我想确保每次建立连接时连接设备都像 groupOwner 一样。我的代码:

if (info.groupFormed && info.isGroupOwner) {

     // GroupOwner     

   } else if (info.groupFormed) {


   } 
4

2 回答 2

8

如果您的目标是使正在宣传服务的设备也成为组所有者,那么在您的WifiP2pManager实例createGrouponSuccess调用addLocalService

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
WifiP2pManager.Channel channel = serverManager.initialize(this, getMainLooper(), null);

HashMap<String, String> record = new HashMap<String, String>();

WifiP2pServiceInfo serviceInfo = WifiP2pDnsSdServiceInfo.newInstance("_hello", "_world._tcp", record);

//remove legacy group
manager.removeGroup(channel, null);

//advertise your service
manager.addLocalService(channel, serviceInfo, new WifiP2pManager.ActionListener() {

  @Override
  public void onFailure(int reason) {
  }

  @Override
  public void onSuccess() {
    //create group, making this device the owner of the group
    manager.createGroup(channel, null);
  }

});
于 2013-10-31T13:27:39.677 回答
5

您必须使用传递给 connect() 调用groupOwnerIntent的object 的属性。WifiP2pConfig例如:

config.groupOwnerIntent = 15;

值范围在 0-15 之间,值越高,成为 groupOwner 的可能性就越大。

于 2013-10-11T12:37:06.727 回答