如何在 Wifi-Direct Android 中创建特定组所有者

Posted

技术标签:

【中文标题】如何在 Wifi-Direct Android 中创建特定组所有者【英文标题】:How to make a specific group owner in Wifi-Direct Android 【发布时间】:2013-09-09 17:38:51 【问题描述】:

我有一个 Wifi Direct android 应用程序,可以在两部手机上运行。

phone1 连接到phone2 时,我希望phone1 充当clientphone2 充当server

我使用了这个代码:

if (info.groupFormed && info.isGroupOwner) 

           // start the server thread

    else if (info.groupFormed) 

            // start the client thread
   

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

我想确保phone2 始终充当GroupOwnerserver

【问题讨论】:

【参考方案1】:

要将 peer 设置为客户端,而不是 GroupOWner eachtime,我们必须分配:

config.groupOwnerIntent = 0;

【讨论】:

相反的情况呢?您如何强制对等方不是客户? 这取决于 0-15 之间的值,值越高成为 groupOwner 的可能性越大。【参考方案2】:

好吧,你可以做的是:

@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

希望对你有帮助。

【讨论】:

以上是关于如何在 Wifi-Direct Android 中创建特定组所有者的主要内容,如果未能解决你的问题,请参考以下文章

WiFi-Direct 在游戏开发中的使用 (Android)

在Android和Raspberry Pi 3 Linux之间建立Wifi-Direct连接

在 Android 和 Raspberry Pi 3 Linux 之间建立 Wifi-Direct 连接

wifi-direct端连接到Android上的对等点?

Android 将设备名称重命名为 wifi-direct

数据包路由如何在 Wifi-Direct 组中进行?