广播:android.net.wifi.WIFI_HOTSPOT_CLIENTS_CHANGE已经废弃
没有公共API可以提供有关此信息...
但是您可以阅读/ proc / net / arp文件,并查看连接到访问点的客户端。
/ proc / net / arp文件具有6个字段:IP地址,硬件类型,标志,硬件地址,掩码和设备
问题是客户端断开连接时,因为它不会从文件中消失。一个解决方案可能是对每个客户端执行ping操作,然后等待响应,但是对我来说,这不是一个好的解决方案,因为某些客户端不响应ping。如果您喜欢此解决方案,请在GitHub上检查此项目-> https://github.com/nickrussler/Android-Wifi-Hotspot-Manager-Class/tree/master/src/com/whitebyte
我所做的是:读取/ proc / net / arp并检查FLAGS字段,当该值为0x2时表示工作站已连接且0x0断开了连接,但是要刷新此字段,我需要不时清除ARP缓存,并且我用以下命令做到了:ip neigh flush all
$ cat /proc/net/arp
IP address HW type Flags HW address Mask Device
192.168.1.1 0x1 0x2 aa:aa:aa:aa:aa:a1 * eth0
198.18.32.1 0x1 0x6 02:00:00:00:10:01 * vlan2
10.1.2.1 0x1 0x0 00:00:00:00:00:00 * vlan2
198.18.32.18 0x1 0x6 02:00:00:00:10:12 * vlan2
10.1.4.1 0x1 0x0 00:00:00:00:00:00 * vlan4
198.18.32.17 0x1 0x0 00:00:00:00:00:00 * eth1
198.18.32.17 0x1 0x6 02:00:00:00:10:11 * vlan4
198.18.32.1 0x1 0x6 02:00:00:00:10:01 * vlan3
10.1.5.1 0x1 0x0 00:00:00:00:00:00 * vlan5
198.18.32.17 0x1 0x6 02:00:00:00:10:11 * vlan5
198.18.32.1 0x1 0x6 02:00:00:00:10:01 * vlan4
198.18.32.17 0x1 0x6 02:00:00:00:10:11 * vlan2
198.18.35.161 0x1 0x6 02:00:00:00:14:a1 * vlan2
198.18.32.17 0x1 0x6 02:00:00:00:10:11 * vlan3
192.168.5.8 0x1 0x2 70:bb:e9:ba:57:23 * wlan2
198.99.36.3 0x1 0x0 00:00:00:00:00:00 * vlan99
198.18.32.17 0x1 0x6 02:00:00:00:10:11 * vlan11
10.1.6.1 0x1 0x0 00:00:00:00:00:00 * vlan6
198.18.36.1 0x1 0x6 02:00:00:00:14:01 * vlan5
10.1.3.1 0x1 0x0 00:00:00:00:00:00 * vlan3
192.168.5.5 0x1 0x2 d2:72:0e:8b:d4:64 * wlan2
198.18.32.1 0x1 0x6 02:00:00:00:10:01 * vlan5
198.18.36.3 0x1 0x6 02:00:00:00:14:03 * vlan2