我是否可以将支持WiFi Direct的设备连接到任何其他没有WiFi Direct功能但支持WiFi热点连接的设备? WiFi直接使用专用硬件是否存在于两个设备上?在这种情况下网络发现会起作用吗?
有可能的 . 代码取自我在Droidcon UK 2013上发表的演讲 .
您需要调用WifiP2pManager类的 createGroup(WifiP2pManager.Channel c, WifiP2pManager.ActionListener listener) 方法 . 这将创建一个支持传统Wi-Fi连接的Wi-Fi Direct组 .
createGroup(WifiP2pManager.Channel c, WifiP2pManager.ActionListener listener)
在通话之前,您需要注册类似于此的广播接收器:
BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION)){ wifiP2pManager.requestGroupInfo(channel, new WifiP2pManager.GroupInfoListener() { @Override public void onGroupInfoAvailable(WifiP2pGroup group) { if(group != null){ // clients require these String ssid = group.getNetworkName(), String passphrase = group.getPassphrase() } } }); } } };
然后,其他设备可以使用Wi-Fi连接到Wi-Fi Direct设备,一旦他们有ssid和密码短语 .
斯蒂芬的答案很棒,但我发现最好把团体信息告诉他们
WIFI_P2P_CONNECTION_CHANGED_ACTION
... if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) { NetworkInfo networkInfo = intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO); WifiP2pInfo wifiP2pInfo = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_INFO); if (networkInfo.isConnected() && wifiP2pInfo.groupFormed) { if (wifiP2pInfo.isGroupOwner) { wifiP2pManager.requestGroupInfo(channel, new WifiP2pManager.GroupInfoListener() { @Override public void onGroupInfoAvailable(final WifiP2pGroup wifiP2pGroup) { if (wifiP2pGroup != null) { // clients require these String ssid = wifiP2pGroup.getNetworkName(); String passphrase = wifiP2pGroup.getPassphrase(); ... } } } } } } } ...
因为这可以确保创建接入点,并且当前设备是组所有者(GO) .
根据WiFi Direct文档,as mentiond here.
如果我重新说明文档,
使用当前设备作为组所有者创建一个p2p组 . 这实际上创建了一个接入点,可以接受来自旧客户端以及其他p2p设备的连接
但指南的范围很窄 . 你需要做一些研究才能找到实施方法!
3 回答
有可能的 . 代码取自我在Droidcon UK 2013上发表的演讲 .
您需要调用WifiP2pManager类的
createGroup(WifiP2pManager.Channel c, WifiP2pManager.ActionListener listener)
方法 . 这将创建一个支持传统Wi-Fi连接的Wi-Fi Direct组 .在通话之前,您需要注册类似于此的广播接收器:
然后,其他设备可以使用Wi-Fi连接到Wi-Fi Direct设备,一旦他们有ssid和密码短语 .
斯蒂芬的答案很棒,但我发现最好把团体信息告诉他们
因为这可以确保创建接入点,并且当前设备是组所有者(GO) .
根据WiFi Direct文档,as mentiond here.
如果我重新说明文档,
但指南的范围很窄 . 你需要做一些研究才能找到实施方法!