android获取已连上热点设备名称,2、android获取连接到手机热点上的设备的信息

文章讲述了作者在开发项目中遇到的问题,即如何在Android手机开启热点时获取连接设备信息。通过研究APDemo源码和Linux系统中的/proc/net/arp文件,找到了获取MAC/IP地址的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开发一个项目,遇到一个问题,在手机开启热点的情况下,想要获取是哪个设备已经连接上了Android手机开启的热点。

经过google,baidu ,最终没有找到答案。

最后想起在国外论坛下载了一个AP Demo,看了看源码,最终找到了可解决问题的方法。

如下:此方法肯定是熟知linux开发者想到的办法,用re文件管理器去"/proc/net/arp",进去一看,发现连接上热点的设备信息都在这里了,包括mac ip等

private ArrayList getConnectedIP() {

        ArrayList connectedIP = new ArrayList();

        try {

            BufferedReader 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) {

                    String ip = splitted[0];

                    connectedIP.add(ip);

                }

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

        return connectedIP;

    }

调用方法:

        ArrayList connectedIP = getConnectedIP();

        resultList = new StringBuilder();

        for (String ip : connectedIP) {

            resultList.append(ip);

            resultList.append("\n");

        }

        System.out.print(resultList);

转自:android获取已连上热点设备名称,2、android获取连接到手机热点上的设备的信息_weixin_31256083-华为云开发者联盟

Android系统中,获取连接到热点网络的设备名称通常需要通过Wi-Fi P2P API或者借助第三方库来实现,因为Android系统的API并不直接提供获取其他设备热点信息的功能。以下是一个简化的步骤: 1. **权限检查**:首先确保应用获得了`ACCESS_WIFI_STATE`、`CHANGE_WIFI_STATE`以及`INTERNET`权限。 2. **启用Wi-Fi P2P功能**:如果你的应用打算使用Wi-Fi Direct(即热点),需要在Manifest文件中添加`<uses-feature>`标签,并在运行时设置Wi-Fi P2P服务。 ```xml <uses-feature android:name="android.hardware.wifi.p2p" android:required="true"/> ``` 3. **扫描Wi-Fi Direct设备**:创建并初始化一个`WifiP2pManager`实例,然后请求发现设备列表: ```java WifiP2pManager wifiP2pManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); WifiP2pManager.Channel channel = wifiP2pManager.initialize(this, getMainLooper(), null); try { wifiP2pManager.requestPeers(channel, new WifiP2pManager.PeerListListener() { @Override public void onPeersAvailable(WifiP2pDeviceList peers) { for (WifiP2pDevice device : peers.getDevices()) { String deviceName = device.deviceName; // 这里就是你要获取设备名称 } } }); } finally { if (channel != null) { wifiP2pManager.shutdown(channel); } } ``` 4. **处理结果**:在回调中遍历`WifiP2pDeviceList`中的`WifiP2pDevice`对象,获取每个设备名称。 注意:这只是一个大概的示例,实际操作时需要处理异常和可能的错误。此外,某些版本的Android系统可能对这个API进行了限制,或者需要用户手动开启Wi-Fi Direct功能才能获取其他设备
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值