TetheringManager.java
registerTetheringEventCallback(Executor executor, TetheringEventCallback callback){
final ITetheringEventCallback remoteCallback = new ITetheringEventCallback.Stub() {
public void onTetherClientsChanged(final List<TetheredClient> clients) {
executor.execute(() -> callback.onClientsChanged(clients));
}
}
}
TetheredClient里的AddressInfo.getHostname 可以获取wifi客户端的名称
追代码(未验证)猜测:
Tethering.updateConnectedClients--->ConnectedClientsTracker.updateConnectedClients
public boolean updateConnectedClients(
Iterable<IpServer> ipServers, @Nullable List<WifiClient> wifiClients) {
for (IpServer server : ipServers) {
for (TetheredClient client : server.getAllLeases()) {
final TetheredClient prunedClient = pruneExpired(client, now);
if (prunedClient == null) continue; // All addresses expired
addLease(clientsMap, prunedClient);
}
}
}
最后是用ipserver获取所有的 dhcp信息并上报