使用WiFi Direct连接Android设备

时间:2013-11-19 11:30:23

标签: java android p2p android-wifi wifi-direct

我正在开发一个应用程序,它首先发现范围内的同伴,然后逐个连接所有这些我的函数看起来像这样:

void connectTo(WifiP2pDevice device) {
        WifiP2pConfig config = new WifiP2pConfig();
        config.deviceAddress = device.deviceAddress;
        config.groupOwnerIntent=15;
        wifiP2pManager.connect(wifiDirectChannel, config, actionListener);
        wifiP2pManager.createGroup(wifiDirectChannel, actionListener);
      }

但我不知道Wifip2pManager类的connect和createGroup函数之间的区别。它们之间的核心区别是什么,请帮助!

1 个答案:

答案 0 :(得分:1)

我知道我迟到了,但我相信这会对别人有所帮助。不需要createGroup,只需要以这种方式调用connect方法:

void connectTo(WifiP2pDevice device) {
            WifiP2pConfig wifiP2pConfig = new WifiP2pConfig();
            wifiP2pConfig.deviceAddress = device.deviceAddress;
            wifiP2pConfig.groupOwnerIntent = 0;
            wifiP2pConfig.wps.setup = WpsInfo.PBC;

            if (wifiP2pManager != null) {

                wifiP2pManager.connect(mChannel, wifiP2pConfig,
                        new ActionListener() {

                            @Override
                            public void onSuccess() {
                                // WiFiDirectBroadcastReceiver will notify us.
                                // Ignore for now.
                                Utility.showToast(
                                        WifiP2PConnectionActivity.this,
                                        Constants.CONNECTED);

                            }

                            @Override
                            public void onFailure(int reason) {
                                Utility.showToast(
                                        WifiP2PConnectionActivity.this,
                                        getErrorMessage(reason));

                            }
                        });
}

它现在将连接。 wifiP2pConfig.groupOwnerIntent = 0;设置为零,以便您允许其他设备每次成为所有者和您自己的设备作为客户端。 groupOwnerIntent优先考虑我们自己的设备优先级,而不是成为groupOwner。休息取决于您希望设备的行为方式。