我的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月前
|
设计模式 Java Android开发
安卓应用开发中的内存泄漏检测与修复
【9月更文挑战第30天】在安卓应用开发过程中,内存泄漏是一个常见而又棘手的问题。它不仅会导致应用运行缓慢,还可能引发应用崩溃,严重影响用户体验。本文将深入探讨如何检测和修复内存泄漏,以提升应用性能和稳定性。我们将通过一个具体的代码示例,展示如何使用Android Studio的Memory Profiler工具来定位内存泄漏,并介绍几种常见的内存泄漏场景及其解决方案。无论你是初学者还是有经验的开发者,这篇文章都将为你提供实用的技巧和方法,帮助你打造更优质的安卓应用。
|
7月前
|
Android开发
如何在Android真机上检测是否有Google Map add-on
如何在Android真机上检测是否有Google Map add-on
76 3
|
7月前
|
API Android开发
Android高手进阶教程(十五)之---通过Location获取Address的使用!
Android高手进阶教程(十五)之---通过Location获取Address的使用!
68 1
|
7月前
|
Android开发
Android 状态栏WiFi图标的显示逻辑
Android 状态栏WiFi图标的显示逻辑
172 0
|
5月前
|
监控 Java Android开发
探究Android应用开发中的内存泄漏检测与修复
在移动应用的开发过程中,优化用户体验和提升性能是至关重要的。对于Android平台而言,内存泄漏是一个常见且棘手的问题,它可能导致应用运行缓慢甚至崩溃。本文将深入探讨如何有效识别和解决内存泄漏问题,通过具体案例分析,揭示内存泄漏的成因,并提出相应的检测工具和方法。我们还将讨论一些最佳实践,帮助开发者预防内存泄漏,确保应用稳定高效地运行。
|
7月前
|
Shell 开发工具 Android开发
|
6月前
|
存储 算法 Java
Android 进阶——代码插桩必知必会&ASM7字节码操作
Android 进阶——代码插桩必知必会&ASM7字节码操作
254 0
|
7月前
|
Android开发
Android获取当前连接的wifi名称
Android获取当前连接的wifi名称
338 6
|
7月前
|
缓存 网络协议 Java
挑战全网,史上最全Android开发进阶,跳槽复习指南(1),掌握这6大技能体系
挑战全网,史上最全Android开发进阶,跳槽复习指南(1),掌握这6大技能体系
|
7月前
|
Android开发
android检测网络连接是否存在(一)
android检测网络连接是否存在(一)
52 2