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 ...
随机推荐
- 加密grub防止通过单用户模式破解root密码
(1).CentOS6 1)产生加密密码 [root@CentOS6 ~]# grub-md5-crypt Password: Retype password: $1$QPduF0$FNhzDUPQP ...
- 用UltraEdit转换大小写
alt+F5转大写: ctrl+F5转小写: F5每个单词的首字母大写: Shift+F5大小写互换.
- 基于特征码文件恢复工具magicrescue
基于特征码文件恢复工具magicrescue 常见类型的文件都包含一些特殊的字节,用来标识文件的类型.这些字节被称为特征码.在磁盘中,当记录文件存储位置的簇损坏后,就可以基于这些特征码来恢复文件. ...
- 当你的静态资源CDN挂掉了该怎么办?
都知道使用静态的CDN引入jQuery等一些js包的时候,会提升网页的性能,那么,如果你引入CDN的地址挂掉了,那么项目同样也会挂掉,所以我们需要在引入的时候添加一个判断.如下: <script ...
- Opencv学习笔记5:Opencv处理彩虹图、铜色图、灰度反转图
一.概述: 人类能够观察到的光的波长范围是有限的,并且人类视觉有一个特点,只能分辨出二十几种灰度,也就是说即使采集到的灰度图像分辨率超级高,有上百个灰度级,但是很遗憾,人们只能看出二十几个,也就是说信 ...
- Qt Quick快速入门之qml布局
Qml里面布局主要有两种,锚点布局.Grid布局. 锚点布局使用anchors附件属性将一个元素的边定位到另一个元素的边,从而确定元素的位置和大小.下面是示例 import QtQuick 2.3 i ...
- [BZOJ5317][JSOI2018]部落战争(闵可夫斯基和)
对于点集$A$,$B$,闵可夫斯基和$C=\{(x1+x2,y1+y2)|(x1,x2)\in A,(y1,y2)\in B\}$.由此可知,对于两个凸包$A$,$B$的闵可夫斯基和$C$满足,$C$ ...
- 【平面图最小割】BZOJ2007-[NOI2010]海拔
[题目大意] 城市被东西向和南北向的主干道划分为n×n个区域,包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路.现得到了每天每条道路两个方向的人流量.每一个交叉路口都有海拔,每向上爬h ...
- 【SPFA判断负环】BZOJ1715- [Usaco2006 Dec]Wormholes 虫洞
[题目大意] 判断一张图中是否存在负环. [思路] dfs版SPFA. #include<bits/stdc++.h> using namespace std; struct edge { ...
- 使用 Nexus 搭建私服仓库时我犯的一个小错误
私服搭建好,啥都配置好了,纳闷的是 Repositories 中的 group 为何总是空值?我还反反复复删了又重建,结果还是一样,不经意间再看 Configuration 选项卡的内容,发现左右两个 ...