如何获得通过电话接入点连接的设备数量?

众所周知,Android设备具有将手机变为接入点/热点的function。

是否可以通过编程方式获得连接到手机wifi接入点的设备数量?

您可以在接入点上计算连接的设备,并在android的以下链接上获取硬件mac地址: http : //www.flattermann.net/2011/02/android-howto-find-the-hardware-mac-address-of-一个远程主机/

上面链接的代码:

/** * Try to extract a hardware MAC address from a given IP address using the * ARP cache (/proc/net/arp).
*
* We assume that the file has this structure:
*
* IP address HW type Flags HW address Mask Device * 192.168.18.11 0x1 0x2 00:04:20:06:55:1a * eth0 * 192.168.18.36 0x1 0x2 00:22:43:ab:2a:5b * eth0 * * @param ip * @return the MAC from the ARP cache */ public static String getMacFromArpCache(String ip) { if (ip == null) return null; 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 && ip.equals(splitted[0])) { // Basic sanity check String mac = splitted[3]; if (mac.matches("..:..:..:..:..:..")) { return mac; } else { return null; } } } } catch (Exception e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } return null; }

或者如果您对代码有问题,请尝试以下代码:

  public ArrayList getConnectedDevices(String YourPhoneIPAddress) { ArrayList ret = new ArrayList(); LoopCurrentIP = 0; String IPAddress = ""; String[] myIPArray = YourPhoneIPAddress.split("\\."); InetAddress currentPingAddr; for (int i = 0; i <= 255; i++) { try { // build the next IP address currentPingAddr = InetAddress.getByName(myIPArray[0] + "." + myIPArray[1] + "." + myIPArray[2] + "." + Integer.toString(LoopCurrentIP)); ad = currentPingAddr.toString(); ///////////////// Log.d("MyApp",ad); ////////////// // 50ms Timeout for the "ping" if (currentPingAddr.isReachable(50)) { ret.add(currentPingAddr); ad = currentPingAddr.toString(); ///////////////// Log.d("MyApp",ad); ////////////// } } catch (UnknownHostException ex) { } catch (IOException ex) { } LoopCurrentIP++; } return ret; }