我的Android进阶之旅------>Android检测wifi连接状态

简介:                        今天要实现监听系统Wifi连接状态,下面代码简化后提取出来的,以备后用。step1. 编写BroadcastReceiverimport android.

          

            今天要实现监听系统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

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


相关文章
|
2月前
|
存储 网络安全 Python
WiFi连接树莓派【2月更文挑战第2天】
要通过WiFi连接树莓派并显示其摄像头视频信息,您需要按照以下步骤操作: 1. 确保您的电脑和树莓派已连接到同一个WiFi网络。 2. 安装Python和必要的库:在您的电脑上安装Python 3.6或更高版本,并安装pip(Python包管理器)。然后,通过pip安装以下库: 【2月更文挑战第2天】
24 1
|
3月前
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
61 0
|
3月前
|
定位技术 Android开发
uniapp获取wifi连接状态
uniapp获取wifi连接状态
122 0
|
4月前
|
XML API Android开发
Android WIFI使用简述(上)
Android WIFI使用简述(上)
|
7月前
|
安全 数据安全/隐私保护 网络架构
如何查看电脑所有连接过的wifi密码?
如何查看电脑所有连接过的wifi密码?
283 0
|
1月前
|
前端开发 安全 数据安全/隐私保护
WPA_CLI 的介绍:介绍如何使用wpa_cli连接WiFi的方法
WPA_CLI 的介绍:介绍如何使用wpa_cli连接WiFi的方法
50 2
|
5月前
|
安全 数据安全/隐私保护
windows10 查看已连接wifi的密码
windows10 查看已连接wifi的密码
134 0
|
4月前
|
API 数据安全/隐私保护 Android开发
Android WIFI使用简述(下)
Android WIFI使用简述(下)
|
4月前
|
Android开发 网络架构
【Android App】检查手机连接WiFi信息以及扫描周围WiFi的讲解及实战(附源码和演示 超详细必看)
【Android App】检查手机连接WiFi信息以及扫描周围WiFi的讲解及实战(附源码和演示 超详细必看)
206 1
|
4月前
|
XML 监控 Java
Android App开发之事件交互Event中检测软键盘和物理按键讲解及实战(附源码 演示简单易懂)
Android App开发之事件交互Event中检测软键盘和物理按键讲解及实战(附源码 演示简单易懂)
135 0