Android之WifiManager
移动设备离不开网络,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代码如下
//获取WifiManager
wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); /**
* 扫描网络
* @param v
*/
public void netScan(View v){
//启动扫描
wifiManager.startScan();
//获取扫描结果
List<ScanResult> 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需要用到如下权限:
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
出处:http://www.cnblogs.com/jerehedu/
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:

Android之WifiManager的更多相关文章
- Android Weekly Notes Issue #230
Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...
- 搬-Android - Wi-Fi Tutorial[转]
http://www.tutorialspoint.com/android/android_wi_fi.htm Android allows applications to access to vie ...
- Android 8 Wifi 初始化过程
记录一下wifi初始化过程. packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java public void on ...
- android学习-仿Wifi模块实现
最近研究android内核-系统关键服务的启动解析,然而我也不知道研究wifi的作用,就当兴趣去做吧(其实是作业-_-) 系统原生WiFI功能大概有:启动WiFI服务,扫描WiFi信息(这个好像已经被 ...
- Sipdroid实现SIP(一): 注册
目录 注册: 预注册获取长号和用户注册 预注册返回长号 周期性用户注册 Receiver类概述 SipdroidEngine类概述 Sipdroid类中的用户注册: 注册代理和注册事务 注册代理类Re ...
- Android—基于微信开放平台v3SDK,开发微信支付填坑。
接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...
- xamarin android,UWP 网络类型和IP地址
App开发经常要判断网络连通情况,并判断网络类型,获取网络IP.xamarin中可以使用Dependencies提供各平台下的方法,现把各平台代码记录如下: using System; using S ...
- Android 系统工具类SystemUtils
包含的功能有: 获取系统中所有APP应用.获取用户安装的APP应用.根据包名和Activity启动类查询应用信息.跳转到WIFI设置.WIFI网络开关.移动网络开关.GPS开关 当前若关则打开 当前若 ...
- Android Lint Checks
Android Lint Checks Here are the current list of checks that lint performs as of Android Studio 2.3 ...
随机推荐
- Sting.format字符串格式化
控制格式scanf printf 也不知道为什么=-= 越研究深层的java就越感觉它是从别的语言那抄袭来的
- C#剪切板
C#剪切板 Clipboard类 我们现在先来看一下官方文档的介绍 位于:System.Windows.Forms 命名空间下 Provides methods to place data on an ...
- 微信小程序 --01
微信小程序开发基础 -- 开发前的准备 缘由 1月9日张小龙微信小程序正式上线,因为微信,所以小程序从诞生开始就头戴巨大的光环,很多的团队,公司以及开发的个体都眼巴巴的盯着这个小程序.而那个时候我却在 ...
- leetcode 链表 两数相加
两数相加 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例 ...
- OI回忆录(流水账)
今天是NOI2017疏散日,晚上回到家在电脑前写下这篇回忆录. 初中参加过几次普及组,拿过一等奖,自招进slyz. 高一参加过CTSC2016,狗牌滚粗qwq 高二参加过WC2017,CTSC2017 ...
- wikioi 1014 装箱问题(背包)
题目描述 Description 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数). 要求n个物品中,任取若 ...
- sql server 游标continue,总是死循环
也遇上过: 死循环是因为continue后又执行与上次相同的fetch了.在continue前加一个fetch next from就可以了.
- SSH深度历险(四) Maven初步学�
这几天接触这个词,非常多遍了,仅仅是浅显的体会到它在GXPT中的优点,功能之强大,又通过网络查询了资料进一步的认识学习了,和大家分享. Maven是基于项目对象模型(POM),能够通过一小段描写叙述信 ...
- 常用NFS mount选项介绍
通过NFS挂接远程主机的文件系统时,使用一些不同的选现可以使得mount比较简单易用.这些选项可以在mount命令中使用,也可以在/etc/fstab和autofs中设定. 以下是NFS mount ...
- static关键字与方法区和类加载
1.static的作用 答:将成员变量或方法存储进方法区.因为方法区能保证数据只存在一份,只会加载一次(类加载器加载类的时候才加载一次) 注:static Object obj = new Objec ...