Android--WIFI--Mac--Ip

本文介绍如何使用Android系统API获取手机的WiFi状态,包括连接信息、MAC地址、内网IP及周边WiFi设备详情。

获取手机的wifi管理:

wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);

链接情况下获取相关信息:

info=wifiManager.getConnectionInfo();

如果wifi没有链接,调用系统方法打开wifi设置页面:

Intent intent=new Intent();
intent.setAction(Settings.ACTION_WIFI_SETTINGS);
startActivity(intent);


1.获取手机Mac地址:

info.getMacAddress();


2.获取手机内网ip:

info.getIpAddress();

注:这里的ip和我们使用ipconfig获取的ip其实是相通的,只是格式进制不同,转换一下即可。


3.进制转换方法:

将16进制的值转换为10进制

(i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + (i >> 24 & 0xFF);

注:i为int类型16位地址码


4.获取手机可连接范围内的所有wifi设备信息:

wifiManager.getScanResults();

返回值数据类型为ScanResult的一个list列表

对ScanResult类中的成员变量简单介绍一下:

1.String SSID:网络名称。

2.String BSSID:AP的地址。

3.int level:发现的信号等级

注:通过调用WifiManager的caculateSignalLevel方法将该数值进行换算,换算成一个绝对信号等级呈现给用户。

4.int autoJoinStatus:表示join的状态。

5.int distanceCm:到AP的大概距离


5.获取路由器的Mac地址:

private String getRouterMac(){
        String routerMac="";
        List<ScanResult>list=null;
        if(wifiManager!=null){
            list=wifiManager.getScanResults();
            if(list!=null&&info!=null){
                for(int i=0;i<list.size();i++){
                    ScanResult result=list.get(i);
                    if(info.getBSSID().equals(result.BSSID)){
                        routerMac=result.BSSID;
                    }
                }
            }
        }else{
            return "null";
        }
        return routerMac;
    }


注:

注意添加权限:

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.INTERNET"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值