7

我有一个 Wifi Direct Android 应用程序,它将在两部手机上运行。

phone1连接到 时phone2,我想phone1充当 aclientphone2充当server

我使用了这段代码:

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

           // start the server thread

   } else if (info.groupFormed) {

            // start the client thread
   }

但问题是,有时phone1它启动了连接,我希望它充当客户端,有时它充当客户端,GroupOwner并且服务器线程在客户端电话上启动。

我想确保phone2始终充当 aGroupOwner和 a server

4

2 回答 2

12

要将 peer 设置为 client ,而不是GroupOWnereachtime ,我们必须分配:

config.groupOwnerIntent = 0;
于 2013-09-09T19:12:22.523 回答
5

好吧,你可以做的是:

@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。

文档在这里

希望能帮助到你。

于 2015-03-16T16:26:59.257 回答