我能够从应用程序连接WiFi Direct设备,而连接设备则充当群组所有者和非群组所有者。我主要在Nexus设备中遇到这个问题。连接后,如果设备充当组所有者,则显示错误的IP地址。这是我正在使用的代码。
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = mPeers.get(arg2).deviceAddress;
config.wps.setup = WpsInfo.PBC;
config.groupOwnerIntent=0;
mWifiP2pManager.connect(mChannel, config, new ActionListener() {
@Override
public void onSuccess() {
isconnected=true;
}
@Override
public void onFailure(int reason) {
Toast.makeText(ConfigureNetworkActivity.this, "Connect failed."+reason,
Toast.LENGTH_SHORT).show();
}
});
我正在使用此代码检索IP地址。 info.groupOwnerAddress.getHostAddress(); 如果设备在连接后充当群组所有者,我们如何才能检索到正确的IP地址?
提前致谢。
答案 0 :(得分:0)
通过使用此代码,我可以检索Connected WiFi Direct设备的IP地址。如果是集团所有者。
public static String getIPFromMac(String MAC) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("/proc/net/arp"));
String line;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(" +");
if (splitted != null && splitted.length >= 4) {
// Basic sanity check
String device = splitted[5];
if (device.matches(".*p2p-p2p0.*")){
String mac = splitted[3];
if (mac.matches(MAC)) {
return splitted[0];
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
谢谢..