博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android之WifiManager
阅读量:6815 次
发布时间:2019-06-26

本文共 2594 字,大约阅读时间需要 8 分钟。

  移动设备离不开网络,android平台中在包android.net.wifi下提供了一些类专门用于管理设备的Wifi功能。该包下主要存在如下几个类:

1、  ScanResult:主要用来描述通过Wifi硬件扫描获取的周边的wifi热点的信息。包含的字段信息和方法如下图:

2、  WifiConfiguration:此类用于描述Wifi网络的配置信息,包括安全配置信息。在该类中提供了如下几个之类,主要用于说明Wifi的加密方式。

  3、  WifiInfo:用于描述已经链接的Wifi的信息,通过如下方法,可以获取相关的信息

getBSSID():获取BSSID,以XX:XX:XX:XX:XX:XX的形式

getDetailedStateOf(SupplicantState suppState):获取网络链接的状态。

getHiddenSSID():SSID是否被隐藏。

getIpAddress():获取IP地址

getLinkSpeed():获取链接的速度

getNetworkId():获取网络编号

getRssi():获取强度。

getSSID():获取SSID信息

getSupplicantState():获取客户端状态信息

4、  WifiManager:该类主要用来管理Wifi,里面含有许多方法,如下图,具体使用可以查看下面的案例。

下面我们通过一个案例来演示WifiManager的具体使用方法,案例界面效果如下图:

 

Activity代码如下

//获取WifiManagerwifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);/** * 扫描网络 * @param v */public void netScan(View v){    //启动扫描    wifiManager.startScan();    //获取扫描结果    List
mData= wifiManager.getScanResults(); ScanReslutAdapter adapter = new ScanReslutAdapter(mData); listView.setAdapter(adapter);}/** * 打开网络 * @param v */public void openNet(View v){ if(!wifiManager.isWifiEnabled()){ wifiManager.setWifiEnabled(true); }}/** * 关闭网络 * @param v */public void closeNet(View v){ if(wifiManager.isWifiEnabled()){ wifiManager.setWifiEnabled(false); }}/** * 获取网络状态 * @param v */public void getNetState(View v){ int state= wifiManager.getWifiState(); String stateStr = ""; switch (state){ case WifiManager.WIFI_STATE_DISABLED: stateStr="DISABLED"; break; case WifiManager.WIFI_STATE_DISABLING: stateStr="DISABLING"; break; case WifiManager.WIFI_STATE_ENABLED: stateStr="ENABLED"; break; case WifiManager.WIFI_STATE_ENABLING: stateStr="ENABLING"; break; } netState.setText("网络状态:"+stateStr);}/** * 监控Wifi信号的强度 * @param v */public void monitorSignal(View v){ //获取当前Wifi的链接信息 WifiInfo wifiInfo= wifiManager.getConnectionInfo(); //获取信号强度 int level = wifiInfo.getRssi(); //获得信号强度值 level = wifiInfo.getRssi(); //根据获得的信号强度发送信息 String levelStr="无信号"; if (level <= 0 && level >= -50) { levelStr="信号最好"; } else if (level < -50 && level >= -70) { levelStr="信号较好"; } else if (level < -70 && level >= -80) { levelStr="信号一般"; } else if (level < -80 && level >= -100) { levelStr="信号差"; } netInfo.setText("信号强度:"+levelStr);}

注意,访问Wifi需要用到如下权限:

 

作者:杰瑞教育
出处:
 
版权声明:本文版权归
技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:
 

转载于:https://www.cnblogs.com/jerehedu/p/4913729.html

你可能感兴趣的文章
大众公布量子计算北京交通新一代产品亮相
查看>>
武器加持无人机,远程操控就可以抓获犯罪团伙
查看>>
MySQL数据库迁移
查看>>
IOS应用提交所需的ICON
查看>>
第90届中国电子展聚焦行业新热点,拉动产业链上下游快速发展
查看>>
量子力学多世界解释:这个世界的你是穷光蛋 另一个世界是亿万富翁(文中有赠书活动)...
查看>>
不要小看了互联网智能锁,它正撬动整个多元化居住产品时代!
查看>>
工人小明的新同事
查看>>
OPC UA的安全性分析以及正确使用指南
查看>>
使用树莓派和 projectx/os 托管你自己的电子邮件
查看>>
关于nmonanalyser报错“输入超出文件尾”的解决方法
查看>>
轻松面试找到理想员工-非官方的面试技术指南
查看>>
当主库发生宕机,从库如何接管主库
查看>>
卷影副本(Shadow Copies)
查看>>
重新回归
查看>>
AngularJs 知识
查看>>
Spring.NET的AOP怎么玩
查看>>
Linux双机热备解决方案之Heartbeat
查看>>
angerfire宋杨的桌面秀
查看>>
用JQuery给图片添加鼠标移入移出事件
查看>>