Android携帯電話APモードにて本体IP
2117 ワード
これまでAndroidには公式IPでAPモードのIPを取得するインタフェースがなく、Androidの開放性で各メーカーが独自の想像力を発揮してframeworkを修正してきた.したがって、デフォルトのIPは必ずしもAPモードのIPではなく、実際のIPを取得するには別の方法が必要です.
WifiがAPモードであるかどうかを確認し、次のコードを実行します.
Android frameworkのコードを見ると、192.168.43.1はAPモードのデフォルトIPですが、一部のストリームに合わないメーカーが修正することはありません.問題ありません.APモードがオンになった後、すべてのIPを列挙し、結果として192.168の先頭のIPに一致します.IPを非192.168段に変更するメーカーがあれば、システムproperty wifiを読み取る方法もある.interfaceの値は,wlan 0であればwlan 0のIPが結果である.
WifiがAPモードであるかどうかを確認し、次のコードを実行します.
private String getIP() {
// default IP for most device's softAp
String hotspotIp = "192.168.43.1";
try {
Enumeration faces = NetworkInterface.getNetworkInterfaces();
while (faces.hasMoreElements()) {
NetworkInterface iface = faces.nextElement();
if (iface.isUp() && !iface.isLoopback() && !iface.isPointToPoint()) {
List listAddress = iface.getInterfaceAddresses();
for (InterfaceAddress address: listAddress) {
String ip = address.getAddress().toString();
Log.d("Stone", iface.getName() + " ip : " + ip);
if (ip.startsWith("/192.168")) {
hotspotIp = ip;
}
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
return hotspotIp.replace("/", "");
}
Android frameworkのコードを見ると、192.168.43.1はAPモードのデフォルトIPですが、一部のストリームに合わないメーカーが修正することはありません.問題ありません.APモードがオンになった後、すべてのIPを列挙し、結果として192.168の先頭のIPに一致します.IPを非192.168段に変更するメーカーがあれば、システムproperty wifiを読み取る方法もある.interfaceの値は,wlan 0であればwlan 0のIPが結果である.