編輯:關於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) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo net = connectivityManager.getActiveNetworkInfo();
if (net == null) {
Log.i(@@@@@@@@@@@@NetworkReceiver, 無網絡連接);
} else {
Log.i(@@@@@@@@@@@@NetworkReceiver, 網絡連接類型為 + net.getTypeName());
}
// wifi連接狀態
State wifi = connectivityManager.getNetworkInfo(
ConnectivityManager.TYPE_WIFI).getState();
if (wifi == State.CONNECTED || wifi == State.CONNECTING) {
Log.i(@@@@@@@@@@@@NetworkReceiver, 連接wifi);
// wifi管理
WifiManager wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
StringBuffer sb = new StringBuffer();
sb.append(
獲取BSSID屬性(所連接的WIFI設備的MAC地址): + wifiInfo.getBSSID());
// sb.append(getDetailedStateOf() 獲取客戶端的連通性:);
sb.append(
獲取SSID 是否被隱藏: + wifiInfo.getHiddenSSID());
// IP地址轉化為字符串格式
sb.append(
獲取IP 地址: + Formatter.formatIpAddress(wifiInfo.getIpAddress()));
sb.append(
獲取連接的速度: + wifiInfo.getLinkSpeed());
sb.append(
獲取Mac 地址(手機本身網卡的MAC地址): + wifiInfo.getMacAddress()==null?No Wifi Device:wifiInfo.getMacAddress());
sb.append(
獲取802.11n 網絡的信號: + wifiInfo.getRssi());
sb.append(
獲取SSID(所連接的WIFI的網絡名稱): + wifiInfo.getSSID());
sb.append(
獲取具體客戶端狀態的信息: + wifiInfo.getSupplicantState());
Log.i(@@@@@@@@@@@@NetworkReceiver, 連接wifi的信息:
+sb.toString());
} else if (wifi == State.DISCONNECTED || wifi == State.DISCONNECTING) {
Log.i(@@@@@@@@@@@@NetworkReceiver, 斷開wifi);
}
}
}
step2. 配置BroadcastReceiver和相關權限
下面是通過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
I/@@@@@@@@@@@@NetworkReceiver( 1653): 無網絡連接 I/@@@@@@@@@@@@NetworkReceiver( 1653): 斷開wifi
小米電視2s和小米電視2區別
小米電視2s定價在2999很大程度上是小米電視2s功能的刪減,其中大家最為關注的是砍掉了3D功能,3d功能可能不是每個人都需要,但是有總比沒有要好嗎?你說對
android按鈕圖片和文本居中的代碼
最近優化項目代碼時,發現一個比較詭異的現象:每當界面進入ActivityA時,cpu在不斷的消耗,內存在不斷的緩慢增長(雖然每次增長的量非常小)。如下圖:最後經過仔細排查
Universal-Image-Loader完全解析
相信大家平時做Android應用的時候,多少會接觸到異步加載圖片,或者加載大量圖片的問題,而加載圖片我們常常會遇到許多的問題,比如說圖片的錯亂,OOM等問題,對於新手來說
Android中的Retrofit+OkHttp+RxJava緩存架構使用
RxJava如何與Retrofit結合先扔出build.gradle文件的內容dependencies { compile fileTree(dir: libs, in