如何使用专用的ssid和密码短语在Android中为Wifi Direct创建自主GO?

时间:2013-09-26 02:01:26

标签: android wifi

我正在尝试用3台平板电脑创建一个WI-FI Direct网络。我想运行WiFi-Direct作为后台服务,将一个设备设置为自主GO。有人可以告诉我如何在Android中完成这项工作?还有人请告诉我如何设置专用SSID和密码短语,这样每当新设备添加到该网络时,他们可以在应用程序启动期间搜索特定的ssid和密码来建立连接?

我正在使用Android API Level 18进行开发......

提前致谢...

4 个答案:

答案 0 :(得分:6)

这就是创建自主群组所有者的方式,即使用以下代码,您可以在 Wifi直接网络中作为群组拥有者故意设置设备

manager.createGroup(channel,new WifiP2pManager.ActionListener()
{
    @Override
    public void onSuccess()
    {
        Toast.makeText(WiFiDirectActivity.this, "Group Created",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onFailure(int reason)
    {}              
}); 

您可以在任何事件上使用此代码,例如按钮单击等。

答案 1 :(得分:2)

Bluemoon10几乎是正确的。我还不能评论,因为我需要50个声望:/。 config.groupOwnerIntent的范围是1-15,其中15是组所有者的最高意图。 如果2个设备尝试连接GO intents == 15,则连接呼叫将失败。如果GO意图关系低于15,则设备同意关联断路器并且将成功。因此,如果您希望一个设备成为组所有者,则必须确保它是唯一一个尝试使用的设备。您可以使用Service Discovery执行此操作,即,如果正在运行服务,则将设备上的GO意图设置为15,并在连接设备上设置为1。只有一个设备需要调用connect才能启动连接。

链接到服务发现教程:http://developer.android.com/training/connect-devices-wirelessly/nsd-wifi-direct.html

答案 2 :(得分:2)

要创建自治组,您只需从您的经理调用createGroup()方法即可。要设置 ssid passPhrase ,您必须调用WifiP2pGroup类 setPassphrase setNetworkName 的隐藏方法。

要实现这一点,请使用java反射。请尝试以下示例。

我们假设WifiP2pGroup将您当前的对象分组。

方法

setPassPhraseMethod=group.getClass().getMethod("setPassphrase", new Class[ {String.class});

现在你调用方法:

setPassPhraseMethod.invoke(group, "yourNewPassPrhase");
希望它有所帮助。

答案 3 :(得分:0)

通常,群组所有者由WiFi Direct协议决定。 但是,您可以使用配置类强制它。

final WifiP2pConfig config = new WifiP2pConfig();
                    config.deviceAddress=myDeviceAddr;
                    config.wps.setup = WpsInfo.PBC;
                    config.groupOwnerIntent =15;

在这种情况下,我认为我说15最不可能成为GO,如果你想让那个设备成为GO,你就把它设置为零。 这也许你可以设置pin等,看看WpsInfo。 此配置信息然后传递到您的连接呼叫。

mManager.connect(mChannel, config, new WifiP2pManager.ActionListener().

希望这有帮助。