Android 네트워크 연결 상태 조회 및 이벤트 모니터
국내에는 주로 두 종류의 네트워크, 와이파이와 GPRS가 있기 때문에 주로 이 두 네트워크에 대해 조회를 하고 다른 것은 고려하지 않았다
공구 코드를 붙여라, 필요한 학우들은 일을 좀 아껴서 불필요한 중복 노동을 피할 수 있다.
package org.dragonboy.net;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
import android.support.v4.net.ConnectivityManagerCompat;
/**
* @author [email protected]
*/
public class Connectivities {
private Connectivities() {
}
/**
* WIFI , —— , WIFI
*
* @param context
* @return true , WIFI, false
*/
public static boolean isWifiConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info != null && info.isConnected()
&& ConnectivityManager.TYPE_WIFI == info.getType()) {
return true;
}
return false;
}
/**
* GPRS , —— , GPRS
*
* @param context
* @return true , GPRS, false
*/
public static boolean isGprsConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info != null && info.isConnected()
&& ConnectivityManager.TYPE_MOBILE == info.getType()) {
return true;
}
return false;
}
/**
*
*
* @param context
* @return true , false
*/
public static boolean isConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info != null && info.isConnected()) {
return true;
}
return false;
}
/**
* , , ,
*
* @param context
* @return true ,false
*/
public static boolean isActiveNetworkMetered(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
return ConnectivityManagerCompat.isActiveNetworkMetered(cm);
}
public static Intent registerReceiver(Context context,
ConnectivityChangeReceiver receiver) {
return context.registerReceiver(receiver,
ConnectivityChangeReceiver.FILTER);
}
public static void unregisterReceiver(Context context,
ConnectivityChangeReceiver receiver) {
context.unregisterReceiver(receiver);
}
public static abstract class ConnectivityChangeReceiver extends
BroadcastReceiver {
public static final IntentFilter FILTER = new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION);
@Override
public final void onReceive(Context context, Intent intent) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiInfo = cm
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo gprsInfo = cm
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
// Connected
boolean wifiConnected = false;
boolean gprsConnected = false;
if (wifiInfo != null && wifiInfo.isConnected()) {
wifiConnected = true;
}
if (gprsInfo != null && gprsInfo.isConnected()) {
gprsConnected = true;
}
if (wifiConnected || gprsConnected) {
onConnected();
return;
}
// Disconnected , : !
boolean wifiDisconnected = false;
boolean gprsDisconnected = false;
if (wifiInfo == null || wifiInfo != null
&& wifiInfo.getState() == State.DISCONNECTED) {
wifiDisconnected = true;
}
if (gprsInfo == null || gprsInfo != null
&& gprsInfo.getState() == State.DISCONNECTED) {
gprsDisconnected = true;
}
if (wifiDisconnected && gprsDisconnected) {
onDisconnected();
return;
}
}
protected abstract void onDisconnected();
protected abstract void onConnected();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.