728x90
ConnectivityManager 란?
ConnectivityManager는 네트워크 연결 상태를 관리하는 역할을 하는 안드로이드 시스템 서비스 입니다. ConnectivityManager활용 하여 현제 Wi-Fi, 모바일 데이터, 이더넷 등 어떤 네트워크를 사용하는지 파악하거나 네트워크 연결 여부를 확인할 수 있습니다.
자세한 내용은 아래 링크에서 확인해보세요 !
https://developer.android.com/reference/android/net/ConnectivityManager
ConnectivityManager 를 활용하여 현제 인터넷이 연결 되어 있는지 확인하는 코드를 작성해 보겠습니다.
코드는 다음과 같습니다.
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView InternetCheck;
Button button4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 레이아웃에서 버튼과 텍스트뷰 객체를 찾아서 초기화
button4 = findViewById(R.id.button4);
InternetCheck = findViewById(R.id.InternetCheck);
// 버튼 클릭 이벤트 리스너 설정
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// CheckNetWork() 메서드를 호출하여 인터넷 연결 상태를 확인하고 결과에 따라 텍스트뷰에 출력
if (CheckNetWork()) {
InternetCheck.setText("인터넷 연결");
} else {
InternetCheck.setText("인터넷 안됨");
}
}
});
}
// 인터넷 연결 상태를 확인하는 메서드
public boolean CheckNetWork() {
// ConnectivityManager 객체를 가져옴
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// 안드로이드 버전이 M 이상인 경우
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// 현재 활성화된 네트워크 가져오기
Network network = connectivityManager.getActiveNetwork();
if (network != null) {
// 네트워크가 존재하는 경우 NetworkCapabilities를 이용하여 네트워크 종류 확인
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);
return networkCapabilities != null && (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR));
} else {
// 네트워크가 존재하지 않는 경우 기존 방식으로 NetworkInfo를 이용하여 네트워크 종류 확인
NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
return activeNetwork != null &&
(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI ||
activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE);
}
}
// 안드로이드 버전이 M 미만인 경우, 기존 방식으로 NetworkInfo를 이용하여 네트워크 종류 확인
NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
return activeNetwork != null &&
(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI ||
activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE);
}
}
결과는 다음과 같습니다.
'안드로이드 자바' 카테고리의 다른 글
[Android][Java] 내 기기에서 오디오 파일 선택해 복사본 생성 및 파일 이름 가져오기 (0) | 2023.09.16 |
---|---|
[Android][Java] 안드로이드에서 socket.io 로 SSL 통신할 때 Trust all certificates 설정해주기 (2) | 2023.09.07 |
[Android][Java] 카메라로 동영상 촬영하기 (0) | 2023.09.04 |
[Android][Java] WebRTC library 사용해서 원격 피어와 연결하기 (2) | 2023.08.21 |
[Android][Java] EditText 글자 수 제한하기 (0) | 2023.08.20 |