Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息)

WifiInfo中包含了当前连接中的相关信息。

getBSSID() 获取BSSID属性

getDetailedStateOf() 获取客户端的连通性

getHiddenSSID() 获取SSID 是否被隐藏

getIpAddress() 获取IP 地址

getLinkSpeed() 获取连接的速度

getMacAddress() 获取Mac 地址

getRssi() 获取802.11n 网络的信号

getSSID() 获取SSID

getSupplicanState() 获取具体客户端状态的信息

六、示例

====

1)获得WifiManager

WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);

2)获取Wifi信息

WifiInfo wifiInfo=wifiManager.getConnectionInfo(); //当前wifi连接信息

List scanResults=wifiManager.getScanResults();//搜索到的设备列表

for (ScanResult scanResult : scanResults) {

tv.append(“\n设备名:”+scanResult.SSID

+" 信号强度:“+scanResult.level+”/n :"+wifiManager.calculateSignalLevel(scanResult.level,4));

}

附 WifiManager中计算级别的代码:

/**

  • Calculates the level of the signal. This should be used any time a signal

  • is being shown.

  • @param rssi The power of the signal measured in RSSI.

  • @param numLevels The number of levels to consider in the calculated

  •        level.
    
  • @return A level of the signal, given in the range of 0 to numLevels-1

  •     (both inclusive).
    

*/

public static int calculateSignalLevel(int rssi, int numLevels) {

if (rssi <= MIN_RSSI) {

return 0;

} else if (rssi >= MAX_RSSI) {

return numLevels - 1;

} else {

int partitionSize = (MAX_RSSI - MIN_RSSI) / (numLevels - 1);

return (rssi - MIN_RSSI) / partitionSize;

}

}

3)网络权限

如:方法封装(返回返回当前连接的wifi的名字)

private String getConnectWifiSsid(){

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);

WifiInfo wifiInfo = wifiManager.getConnectionInfo();

Log.d(“wifiInfo”, wifiInfo.toString());

Log.d(“SSID”,wifiInfo.getSSID());

return wifiInfo.getSSID();

}

如果不是想获取当前连接,而是想获取WIFI设置中的连接, 可以使用  WifiManager.getConfiguredNetworks

七、获取当前已连接的wifi配置信息

==================

public class MyWifi extends Activity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TextView infoText = (TextView) this.findViewById(R.id.info);

infoText.setText(getInfo());

}

private String getInfo()

{

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

WifiInfo info = wifi.getConnectionInfo();

String maxText = info.getMacAddress();

String ipText = intToIp(info.getIpAddress());

String status = “”;

if (wifi.getWifiState() == WifiManager.WIFI_STATE_ENABLED)

{

status = “WIFI_STATE_ENABLED”;

}

String ssid = info.getSSID();

int networkID = info.getNetworkId();

int speed = info.getLinkSpeed();

return “mac:” + maxText + “\n\r”

  • “ip:” + ipText + “\n\r”

  • “wifi status :” + status + “\n\r”

  • “ssid :” + ssid + “\n\r”

  • “net work id :” + networkID + “\n\r”

  • “connection speed:” + speed + “\n\r”

;

}

private String intToIp(int ip)

{

return (ip & 0xFF) + “.” + ((ip >> 8) & 0xFF) + “.” + ((ip >> 16) & 0xFF) + “.”

  • ((ip >> 24) & 0xFF);

}

}

八、Android开发周围wifi热点和属性的获取

=========================

一、获取wifi属性

获得Android系统相关的属性,通过Manager来获得对对象的操作服务。WiFi相关的操作中需要用到两个Manager:WifiManager和ConnectivityManage:

[java]  view plain copy

  1. public WifiManager wifiManager;             //管理wifi

  2. public ConnectivityManager connectManager; //管理网络连接

[java]  view plain copy

  1. wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);        //获得系统wifi服务

  2. connectManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);

获得服务后,即可得到对象进而获得相关属性:

[java]  view plain copy

  1. public NetworkInfo netInfo;                 //网络连接

  2. public WifiInfo wifiInfo;                   //wifi

  3. public DhcpInfo dhcpInfo;                   //动态主机配置协议信息的对象,获得IP等网关信息

网络信息的获取:

[java]  view plain copy

  1. netInfo = connectManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

  2. dhcpInfo = wifiManager.getDhcpInfo();

  3. wifiInfo = wifiManager.getConnectionInfo();

要获得wifi相关的网络信息,必须设定网络类型参数:ConnectivityManager.TYPE_WIFI.

下面就可以获得需要的信息,例如当前连接wifi的名称等等属性,即SSID:

[java]  view plain copy

  1. wifiInfo.getSSID();

还要获得当前连接wifi网络的  ip、mask、netgate、dns  等信息,则需要如下实现:

[java]  view plain copy

  1. String wifiProperty = “当前连接Wifi信息如下:”+wifiInfo.getSSID()+‘\n’+

  2. “ip:”     +     FormatString(dhcpInfo.ipAddress)   +‘\n’+

  3. “mask:”   +     FormatString(dhcpInfo.netmask)     +‘\n’+

  4. “netgate:”+     FormatString(dhcpInfo.gateway)     +‘\n’+

  5. “dns:”    +     FormatString(dhcpInfo.dns1)  ;

其中dhcpInfo属性的值为int型,要转换成通常见到的32位地址则需要转换方法:

[java]  view plain copy

  1. public String FormatString(int value){

  2. String strValue=“”;

  3. byte[] ary = intToByteArray(value);

  4. for(int i=ary.length-1;i>=0;i–){

  5. strValue += (ary[i] & 0xFF);

  6. if(i>0){

  7. strValue+=“.”;

  8. }

  9. }

  10. return strValue;

  11. }

  12. public  byte[] intToByteArray(int value){

  13. byte[] b = new byte[4];

  14. for (int i = 0; i < 4; i++){

  15. int offset = (b.length - 1 - i) * 8;

  16. b[i] = (byte) ((value >>> offset) & 0xFF);

  17. }

  18. return b;

  19. }

上述方法即可获得wifi网络相关的信息,根据需要来选择方法。

二、获取周围WiFi热点

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后我想说

为什么很多程序员做不了架构师?
1、良好健康的职业规划很重要,但大多数人都忽略了
2、学习的习惯很重要,持之以恒才是正解。
3、编程思维没能提升一个台阶,局限在了编码,业务,没考虑过选型、扩展
4、身边没有好的架构师引导、培养。所处的圈子对程序员的成长影响巨大。

金九银十面试季,跳槽季,整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

大。

金九银十面试季,跳槽季,整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-uZQyGRqZ-1712150062792)]

里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值