Android(安卓)开启个人热点时 获取连接人数以及连接上的设备信息
16lz
2021-01-26
最近在开发过程当中,遇到一个需求 ,开启个人热点后需要知道有多少人连上了这个热点 以及这些设备的信息
经过一段时间的摸索和反复的查阅资料,有了下面的代码和解决办法:
首先 连接热点的所有信息都保存在proc/net/arp下面 用re文件管理器可以查看一下
会发现 里面有连接的设备的 ip mac地址 等等
好了 那么问题就简单了
直接贴代码:
BufferedReader br = null;ArrayListresult = 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) { // Basic sanity check String mac = splitted[3];// 文件中分别是IP address HW type Flags HW address mask Device
//然后我们拿取HW address 也就是手机的mac地址进行匹配 如果有 就证明是手机
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目录 里面有很多很多信息
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- 在Android中自定义捕获Application全局异常,可以替换掉系统的强制
- 在Android中播放音频和视频
- 用DownLoadManage封装一个App的更新组件(兼容android 6、7、8)
- 【Android】Android(安卓)Studio 查找工程中的无用资源文件和无
- 如何在Android的模拟器中的SD卡中添加文件
- Android如何正确的保存文件
- Android(安卓)酷炫来袭:制作属于你自己的音频播放器(综合运用Media
- 简单轻松!通过USB数据线,让Android(安卓)Studio连接到自己的安卓手