我正在尝试用3台平板电脑创建一个WI-FI Direct网络。我想运行WiFi-Direct作为后台服务,将一个设备设置为自主GO。有人可以告诉我如何在Android中完成这项工作?还有人请告诉我如何设置专用SSID和密码短语,这样每当新设备添加到该网络时,他们可以在应用程序启动期间搜索特定的ssid和密码来建立连接?
我正在使用Android API Level 18进行开发......
提前致谢...
答案 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().
希望这有帮助。