移动设备离不开网络,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的更多相关文章

  1. Android Weekly Notes Issue #230

    Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...

  2. 搬-Android - Wi-Fi Tutorial[转]

    http://www.tutorialspoint.com/android/android_wi_fi.htm Android allows applications to access to vie ...

  3. Android 8 Wifi 初始化过程

    记录一下wifi初始化过程. packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java public void on ...

  4. android学习-仿Wifi模块实现

    最近研究android内核-系统关键服务的启动解析,然而我也不知道研究wifi的作用,就当兴趣去做吧(其实是作业-_-) 系统原生WiFI功能大概有:启动WiFI服务,扫描WiFi信息(这个好像已经被 ...

  5. Sipdroid实现SIP(一): 注册

    目录 注册: 预注册获取长号和用户注册 预注册返回长号 周期性用户注册 Receiver类概述 SipdroidEngine类概述 Sipdroid类中的用户注册: 注册代理和注册事务 注册代理类Re ...

  6. Android—基于微信开放平台v3SDK,开发微信支付填坑。

    接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...

  7. xamarin android,UWP 网络类型和IP地址

    App开发经常要判断网络连通情况,并判断网络类型,获取网络IP.xamarin中可以使用Dependencies提供各平台下的方法,现把各平台代码记录如下: using System; using S ...

  8. Android 系统工具类SystemUtils

    包含的功能有: 获取系统中所有APP应用.获取用户安装的APP应用.根据包名和Activity启动类查询应用信息.跳转到WIFI设置.WIFI网络开关.移动网络开关.GPS开关 当前若关则打开 当前若 ...

  9. Android Lint Checks

    Android Lint Checks Here are the current list of checks that lint performs as of Android Studio 2.3 ...

随机推荐

  1. Oracle 判断为空 all space

    You can use trim on the column. where trim(product_type) is null The above is not DBMS-independent, ...

  2. Windows系统php5.6安装Imagick库

    Windows上的安装坑比较多 1.安装Imagick,需要下载6.9.3之下版本的 http://imagemagick.org/script/download.php 官网都是新版本不可以用 我安 ...

  3. js取float型小数点后x位数的方法

    js中取小数点后两位方法最常用的就是四舍五入函数了,前面我介绍过js中四舍五入一此常用函数,这里正好用上,下面我们一起来看取float型小数点后两位一些方法总结 以下我们将为大家介绍 JavaScri ...

  4. vue2.0使用记录

    父组件给子组件传值[props] 1.首先在父组件的script标签中引入子组件 import Children from './Children' 2.在template内引入子组件 <Chi ...

  5. HDU 4716 A Computer Graphics Problem (水题)

    A Computer Graphics Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  6. The YubiKey -- HOW IT WORKS

    A single YubiKey has multiple functions for protecting access to your email, your apps and your phys ...

  7. Syncovery 是目前功能最为强大的实时自动备份工具

    Syncovery Pro(原名叫做Super Flexible Synchronizer) 是目前功能最为强大的实时自动备份工具,连FTP.WebDAV等全部支持! 最近从V6开始改用比较好记.易懂 ...

  8. JEECG第二期深入使用培训(报名截止2014-06-21)

    JEECG第二期深入使用培训(报名截止2014-06-21) JEECG深度研究-交流碰撞火花,你学会的不不过JEECG,很多其它的是软件架构思想 http://www.jeecg.org/forum ...

  9. 无法完成你的itunes store 请求发生未知错误50

    装上itunes登陆itunes store时遂发现"无法完成您的itunes store的请求,发生未知错误(-50)"跃入眼帘,卸载重装数次还是不见效果,难道是WIN7和itu ...

  10. .NET泛型04,使用Lazy<T>实现延迟加载

    对于一些"大对象"的创建,我们常常希望延迟加载,即在需要的时候再创建对象实例.现在Lazy<T>很好地支持了这一特点.主要包括: 没有Lazy<T>之前 L ...