목차
- ConnectivityManager 클래스란?
- ConnectivityManager 초기화 예제
- Wi-Fi 연결 상태 확인을 위한 NetworkRequest 초기화 예제
- ConnectivityManager에 콜백 등록 예제
- ConnectivityManager에 등록된 콜백 삭제 예제
1. ConnectivityManager 클래스란?
ConnectivityManager
클래스는 안드로이드에서 네트워크 연결 상태를 관리하고, 네트워크 상태 변화에 대한 이벤트를 수신하는데 사용되는 클래스입니다.
이 클래스를 사용하면 앱이 현재 인터넷 연결 상태를 확인하거나 Wi-Fi 연결 및 해제 이벤트를 감지할 수 있습니다.
네트워크 연결 상태를 감지하여 앱의 동작을 조정하거나 사용자에게 네트워크 상태에 관한 정보를 제공하는 등의 기능을 구현할 수 있습니다.
2. ConnectivityManager 초기화 예제
아래는 ConnectivityManager
클래스를 초기화하는 예제입니다.
import android.content.Context;
import android.net.ConnectivityManager;
public class ConnectivityManagerInitializationExample {
private ConnectivityManager connectivityManager;
public ConnectivityManagerInitializationExample(Context context) {
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
}
3. Wi-Fi 연결 상태 확인을 위한 NetworkRequest 초기화 예제
아래는 ConnectivityManager.NetworkCallback
클래스를 사용하여 Wi-Fi 연결 상태를 확인하기 위한 NetworkRequest
객체를 초기화하는 예제입니다.
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkRequest;
public class WifiNetworkRequestInitializationExample {
private ConnectivityManager connectivityManager;
private ConnectivityManager.NetworkCallback networkCallback;
public WifiNetworkRequestInitializationExample(Context context) {
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
networkCallback = new ConnectivityManager.NetworkCallback() {
// 네트워크 상태 변화 이벤트 처리를 위한 콜백 메서드들을 구현합니다.
};
connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
}
}
4. ConnectivityManager에 콜백 등록 예제
아래는 ConnectivityManager.NetworkCallback
클래스를 사용하여 네트워크 연결 상태 변화를 감지하기 위해 ConnectivityManager
에 콜백을 등록하는 예제입니다.
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.os.Build;
import android.util.Log;
public class NetworkCallbackRegistrationExample {
private ConnectivityManager connectivityManager;
private ConnectivityManager.NetworkCallback networkCallback;
public NetworkCallbackRegistrationExample(Context context) {
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// 네트워크가 사용 가능한 상태일 때 호출됩니다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);
if (networkCapabilities != null && networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
Log.d("NetworkCallback", "Wi-Fi 연결됨");
}
}
}
@Override
public void onLost(Network network) {
// 네트워크 연결이 끊긴 상태일 때 호출됩니다.
Log.d("NetworkCallback", "Wi-Fi 연결 끊김");
}
};
connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
}
}
5. ConnectivityManager에 등록된 콜백 삭제 예제
아래는 ConnectivityManager
에 등록된 콜백을 삭제하는 예제입니다.
import android.content.Context;
import android.net.ConnectivityManager;
public class NetworkCallbackUnregistrationExample {
private ConnectivityManager connectivityManager;
private ConnectivityManager.NetworkCallback networkCallback;
public void NetworkCallbackRegistration(Context context) {
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
networkCallback = new ConnectivityManager.NetworkCallback() {
// 콜백 메서드들을 구현합니다.
};
//...
}
public NetworkCallbackUnregistrationExample(Context context) {
// 등록된 콜백 삭제
connectivityManager.unregisterNetworkCallback(networkCallback);
}
}
위 예제들은 ConnectivityManager
클래스를 사용하여 Wi-Fi 연결 및 해제 이벤트를 감지하고, 네트워크 상태 변화에 따라 콜백을 등록하고 삭제하는 다양한 상황에 대해 보여주고 있습니다.
반응형