今天要实现监听系统Wifi连接状态,下面代码简化后提取出来的,以备后用。

step1. 编写BroadcastReceiver

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.text.format.Formatter;
import android.util.Log; import com.canplay.systemui.QuickSettings;
/**
* @author ouyangpeng
* @link http://blog.csdn.net/ouyang_peng
*/
public class NetworkReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String TAG="@@@@@@@@@@@@NetworkReceiver";
ConnectivityManager connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo net = connectivityManager.getActiveNetworkInfo();
            if (net == null) {
                Log.i(TAG, "无网络连接");
            } else {
                Log.i(TAG, "网络连接类型为" + net.getTypeName());
            }
            // wifi连接状态
            State wifi = connectivityManager.getNetworkInfo(
                    ConnectivityManager.TYPE_WIFI).getState();
            if (wifi == State.CONNECTED || wifi == State.CONNECTING) {
                Log.i(TAG, "连接wifi");
                // wifi管理
                WifiManager wifiManager = (WifiManager) context
                        .getSystemService(Context.WIFI_SERVICE);
                WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                StringBuffer sb = new StringBuffer();
                sb.append("\n获取BSSID属性(所连接的WIFI设备的MAC地址):" + wifiInfo.getBSSID());
                // sb.append("getDetailedStateOf()  获取客户端的连通性:");
                sb.append("\n\n获取SSID 是否被隐藏:" + wifiInfo.getHiddenSSID());
                // IP地址转化为字符串格式
                sb.append("\n\n获取IP 地址:" +  Formatter.formatIpAddress(wifiInfo.getIpAddress()));
                sb.append("\n\n获取连接的速度:" + wifiInfo.getLinkSpeed());
                sb.append("\n\n获取Mac 地址(手机本身网卡的MAC地址):" + wifiInfo.getMacAddress()==null?"No Wifi Device":wifiInfo.getMacAddress());
                sb.append("\n\n获取802.11n 网络的信号:" + wifiInfo.getRssi());
                sb.append("\n\n获取SSID(所连接的WIFI的网络名称):" + wifiInfo.getSSID());
                sb.append("\n\n获取具体客户端状态的信息:" + wifiInfo.getSupplicantState());
                Log.i(TAG, "连接wifi的信息:\n"+sb.toString());             } else if (wifi == State.DISCONNECTED || wifi == State.DISCONNECTING) {
                Log.i(TAG, "断开wifi");
            } }
}

step2. 配置BroadcastReceiver和相关权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

        <!-- 检测网络 -->
<receiver android:name=".NetworkReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<!-- 开机启动的广播 -->
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>

下面是通过logcat打印出来的信息

当wifi连接上时候的信息:

I/@@@@@@@@@@@@NetworkReceiver( 1653): 网络连接类型为WIFI
I/@@@@@@@@@@@@NetworkReceiver( 1653): 连接wifi
I/@@@@@@@@@@@@NetworkReceiver( 1653): 连接wifi的信息:
I/@@@@@@@@@@@@NetworkReceiver( 1653):
I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取BSSID属性(所连接的WIFI设备的MAC地址):20:dc:e6:71:10:e6
I/@@@@@@@@@@@@NetworkReceiver( 1653):
I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取SSID 是否被隐藏:false
I/@@@@@@@@@@@@NetworkReceiver( 1653):
I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取IP 地址:192.168.1.115
I/@@@@@@@@@@@@NetworkReceiver( 1653):
I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取连接的速度:48cc:b2:55:58:f2:02
I/@@@@@@@@@@@@NetworkReceiver( 1653):
I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取802.11n 网络的信号:-49
I/@@@@@@@@@@@@NetworkReceiver( 1653):
I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取SSID(所连接的WIFI的网络名称):FORMIKE
I/@@@@@@@@@@@@NetworkReceiver( 1653):
I/@@@@@@@@@@@@NetworkReceiver( 1653): 获取具体客户端状态的信息:COMPLETED

当wifi断开时候的信息:

I/@@@@@@@@@@@@NetworkReceiver( 1653): 无网络连接
I/@@@@@@@@@@@@NetworkReceiver( 1653): 断开wifi

====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址:http://blog.csdn.net/ouyang_peng

===================================================================================

我的Android进阶之旅------>Android检测wifi连接状态的更多相关文章

  1. 我的Android进阶之旅------>Android颜色值(#AARRGGBB)透明度百分比和十六进制对应关系以及计算方法

    我的Android进阶之旅-->Android颜色值(RGB)所支持的四种常见形式 透明度百分比和十六进制对应关系表格 透明度 十六进制 100% FF 99% FC 98% FA 97% F7 ...

  2. 我的Android进阶之旅------>Android中查看应用签名信息

    一.查看自己的证书签名信息 如上一篇文章<我的Android进阶之旅------>Android中制作和查看自定义的Debug版本Android签名证书>地址:http://blog ...

  3. 我的Android进阶之旅------>Android利用温度传感器实现带动画效果的电子温度计

    要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight ...

  4. 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现

    我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...

  5. 我的Android进阶之旅------> Android为TextView组件中显示的文本添加背景色

    通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...

  6. 我的Android进阶之旅------> Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用Tex ...

  7. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)

    在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的 ...

  8. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)

    正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...

  9. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)

    对于游戏玩家而言,游戏界面上看到的"元素"千变万化:但是对于游戏开发者而言,游戏界面上的元素在底层都是一些数据,不同数据所绘制的图片有所差异而已.因此建立游戏的状态数据模型是实现游 ...

  10. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之开发游戏界面(二)

    连连看的游戏界面十分简单,大致可以分为两个区域: 游戏主界面区 控制按钮和数据显示区 1.开发界面布局 本程序使用一个RelativeLayout作为整体的界面布局元素,界面布局上面是一个自定义组件, ...

随机推荐

  1. Single Number II - LeetCode

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  2. Spring Cloud学习总结(非原创)

    文章大纲 一.课程内容总结二.课程学习地址三.学习资料下载四.参考文章 一.课程内容总结   二.课程学习地址 第一天:https://www.jianshu.com/p/a086421f4bfd第二 ...

  3. Data structure basics - Java Implementation

    Stack & Queue Implementations FixedCapacityQueue package cn.edu.tsinghua.stat.mid_term; import j ...

  4. jersey上传文件解决办法

    这两天在使用jersey 构建的jersey JAX-RS REST服务器,在通过POST方法上传文件的时候,如果根据example来操作的话会引发如下异常: SEVERE: Missing depe ...

  5. 在WCF中使用websocket

    今天在网上闲逛的时候,发现WCF4.5中新增了一个NetHttpBinding协议,它是支持Websocket的.在网上找了一下教程,附上codeproject上的两篇文章: http://www.c ...

  6. 标签页的切换方法(DOM)

    效果: 1.点击“JAVA语言” 2.点击“C语言” 3.点击C++语言 代码: <!doctype html> <html> <head> <meta ch ...

  7. ReactiveCocoa 迎接下一个更加美好的世界

    什么是ReactiveCocoa 如果你有看Github的Trending Objective-C榜单,那你肯定是见过ReactiveCocoa了.如果你在weibo上关注唐巧.onevcat等国内一 ...

  8. Android Retrofit RxJava实现缓存

    RxJava如何与Retrofit结合参考:http://blog.csdn.net/jdsjlzx/article/details/52015347 缓存配置 app网络数据的离线缓存实现有很多种办 ...

  9. XCode设置竖屏

    选中你的项目,在General这个标签内,Deoployment info的这个分组,有一个Device Orientation 标签,内有一个Portrait的选项,选中是竖屏,取消选中是横屏

  10. 一次lenovo a390t刷机体验

    今天一朋友说自己的联想a390t手机有时候打着打着电话就没声音了,手机好像死机了一样,以前用着挺好的没什么毛病. 因为以前用刷机精灵刷过几个android手机,感觉挺简单的,只要找好对应的rom点击两 ...