移动设备离不开网络,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. 1003 Emergency (25)(25 point(s))

    problem 1003 Emergency (25)(25 point(s)) As an emergency rescue team leader of a city, you are given ...

  2. 社会主义核心价值观js代码

    效果如下: 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  3. QT学习笔记6:常见的 QGraphicsItem

    简述 QGraphicsItem 类是 QGraphicsScene 中所有 item 的基类. 它提供了一个轻量级的基础,用于编写自定义 item.其中包括:定义 item 的几何形状.碰撞检测.绘 ...

  4. BZOJ 1283 序列 费用流 网络流 线性规划

    https://darkbzoj.cf/problem/1283 给出一个长度为N的正整数序列Ci,求一个子序列,使得原序列中任意长度为M的子串中被选出的元素不超过K(K,M<=100) 个,并 ...

  5. Jenkins 使用 maven 出现C:\Windows\system32\config\systemprofile的解决

    jenkins 使用 maven 出现 C:\Windows\system32\config\systemprofile 的原因是 Jenkins 服务启动的账号使用了系统的账号,在服务里改成具体的桌 ...

  6. Codeforces Round #358 (Div. 2) E. Alyona and Triangles 随机化

    E. Alyona and Triangles 题目连接: http://codeforces.com/contest/682/problem/E Description You are given ...

  7. Codeforces 505A Mr. Kitayuta's Gift 暴力

    A. Mr. Kitayuta's Gift time limit per test 1 second memory limit per test 256 megabytes input standa ...

  8. 长城小主机GW1等型号进BIOS的设置方法

    主板型号 1.进BIOS办法 2.BIOS下设置U盘启动 3.主板设置上电启动 4.主要是否具有快速U盘启动功能 5.定时开机设置 945GMS Ctrl+Alt+F1(注意:自检响铃后,再按) 在B ...

  9. 该死的Ubuntu 16.04不自动续租DHCP的IP

    BUG,这是一个BUG,参考:https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1551351,如果不自动续租IP,导致的问题就是网线灯还 ...

  10. linux系统时间同步,硬件时钟和系统时间同步,时区的设置

           1.时间同步(手动): date -s "2015-07-15 22:13:30" hwclock --systohc   (表示系统时间同步到硬件时钟) hwclo ...