728x90
ConnectivityManager 를 활용하여 현제 인터넷이 연결 되어 있는지 확인하는 코드를 작성해 보겠습니다.
ConnectivityManager를 활용하여 현재 인터넷 상태 가져오기 코틀린 버전입니다.
자바 버전은 https://stickode.tistory.com/916 를 확인해주세요
ConnectivityManager 란?
ConnectivityManager는 네트워크 연결 상태를 관리하는 역할을 하는 안드로이드 시스템 서비스 입니다. ConnectivityManager활용 하여 현제 Wi-Fi, 모바일 데이터, 이더넷 등 어떤 네트워크를 사용하는지 파악하거나 네트워크 연결 여부를 확인할 수 있습니다.
자세한 내용은 아래 링크에서 확인해보세요 !
https://developer.android.com/reference/android/net/ConnectivityManager
ConnectivityManager | Android Developers
developer.android.com
먼저 MainActivity 입니다.
class MainActivity : AppCompatActivity() {
private lateinit var InternetCheck: TextView
private lateinit var button4: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 레이아웃에서 버튼과 텍스트뷰 객체를 찾아서 초기화
button4 = findViewById(R.id.button4)
InternetCheck = findViewById(R.id.InternetCheck)
// 버튼 클릭 이벤트 리스너 설정
button4.setOnClickListener {
// CheckNetWork() 메서드를 호출하여 인터넷 연결 상태를 확인하고 결과에 따라 텍스트뷰에 출력
if (CheckNetWork()) {
InternetCheck.text = "인터넷 연결"
} else {
InternetCheck.text = "인터넷 안됨"
}
}
}
// 인터넷 연결 상태를 확인하는 메서드
private fun CheckNetWork(): Boolean {
// ConnectivityManager 객체를 가져옴
val connectivityManager =
getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
// 안드로이드 버전이 M 이상인 경우
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// 현재 활성화된 네트워크 가져오기
val network: Network? = connectivityManager.activeNetwork
if (network != null) {
// 네트워크가 존재하는 경우 NetworkCapabilities를 이용하여 네트워크 종류 확인
val networkCapabilities =
connectivityManager.getNetworkCapabilities(network)
return networkCapabilities != null && (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR))
} else {
// 네트워크가 존재하지 않는 경우 기존 방식으로 NetworkInfo를 이용하여 네트워크 종류 확인
val activeNetwork: NetworkInfo? = connectivityManager.activeNetworkInfo
return activeNetwork != null &&
(activeNetwork.type == ConnectivityManager.TYPE_WIFI ||
activeNetwork.type == ConnectivityManager.TYPE_MOBILE)
}
}
// 안드로이드 버전이 M 미만인 경우, 기존 방식으로 NetworkInfo를 이용하여 네트워크 종류 확인
val activeNetwork: NetworkInfo? = connectivityManager.activeNetworkInfo
return activeNetwork != null &&
(activeNetwork.type == ConnectivityManager.TYPE_WIFI ||
activeNetwork.type == ConnectivityManager.TYPE_MOBILE)
}
}
activity_main.xml 입니다.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/InternetCheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintBottom_toTopOf="@+id/button4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
실행 영상입니다.
'안드로이드 코틀린' 카테고리의 다른 글
[안드로이드][코틀린] 사람 이미지 배경 가리기 PorterDuff.Mode (0) | 2023.12.24 |
---|---|
[Android][코틀린] 비트맵 합치기 PorterDuff.Mode (0) | 2023.12.15 |
[Kotlin][Android] 카메라 기능 이용해서 이미지 받아오기 (0) | 2023.12.02 |
[Android/Kotlin] 외부 화면 터치 시 키보드 숨기기 (0) | 2023.11.03 |
[Android][kotlin] EditText 외부 탭하여 키보드 내려가게 하기 (0) | 2023.10.23 |