Android 开启个人热点时 获取连接人数以及连接上的设备信息
本文转自多看一二 并作补充
起因
最近在开发过程当中,遇到一个需求 ,开启个人热点后需要知道有多少人连上了这个热点 以及这些设备的信息
经过一段时间的摸索和反复的查阅资料,有了下面的代码和解决办法:
首先 连接热点的所有信息都保存在proc/net/arp下面 用re文件管理器可以查看一下
会发现 里面有连接的设备的 ip mac地址 等等
好了 那么问题就简单了
直接贴代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| BufferedReader br = null; ArrayList<ClientScanResult> result = null;
try { result = new ArrayList<>(); br = new BufferedReader(new FileReader("/proc/net/arp")); String ss=br.toString(); String line; while ((line = br.readLine()) != null) { String[] splitted = line.split(" +"); if (splitted.length >= 4) { String mac = splitted[3];
if (mac.matches("..:..:..:..:..:..")) { boolean isReachable = InetAddress.getByName(splitted[0]).isReachable(reachableTimeout);
if (!onlyReachables || isReachable) {
result.add(new ClientScanResult(splitted[0], splitted[3], splitted[5], isReachable)); } } } } } catch (Exception e) { CandyLog.e(e.getMessage()); } finally { try { if (br != null) { br.close(); } } catch (IOException e) { CandyLog.e(e.getMessage()); } }
public class ClientScanResult {
private String IpAddr; private String HWAddr; private String Device; private boolean isReachable;
public ClientScanResult(String ipAddr, String hWAddr, String device, boolean isReachable) { super(); this.IpAddr = ipAddr; this.HWAddr = hWAddr; this.Device = device; this.isReachable = isReachable; }
public String getIpAddr() { return IpAddr; }
public void setIpAddr(String ipAddr) { IpAddr = ipAddr; }
public String getHWAddr() { return HWAddr; }
public void setHWAddr(String hWAddr) { HWAddr = hWAddr; }
public String getDevice() { return Device; }
public void setDevice(String device) { Device = device; }
public boolean isReachable() { return isReachable; }
public void setReachable(boolean isReachable) { this.isReachable = isReachable; }
}
|
好了 想要知道连接人数 只要得到集合的size就可以了 又解决一个问题
关键点在于 热点信息储存在proc/net/arp 里面 有兴趣的可以了解下proc目录 里面有很多很多信息