【Kotlin/Android】ネットワーク接続状態を取得・監視する方法!ConnectivityManager

この記事からわかること
- Android Studio/KotlinのConnectivityManagerの使い方
- ネットワーク接続状態を取得・監視する方法
- NetworkRequestとNetworkCallbackの使い方
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
ネットワーク接続状態を取得する方法
Android/Kotlinでネットワーク接続状況を取得するにはConnectivityManager
を使用します。先に手順をまとめていきます。
ネットワーク接続状態を取得する手順
- マニフェストファイルにパーミッションを追加
- ConnectivityManagerインスタンスを取得
- ネットワーク状態を保持するNetworkCapabilitiesを取得
1.マニフェストファイルにパーミッションを追加
ネットワーク接続状態を取得可能にするためにはマニフェストファイルに以下を記述する必要があります。
2.ConnectivityManagerインスタンスを取得
ConnectivityManager
インスタンスはAndroidのシステムサービスを取得するためのgetSystemService
メソッドにCONNECTIVITY_SERVICE
キーを渡して取得します。
3.ネットワーク状態を保持するNetworkCapabilitiesを取得
続いてConnectivityManager
のgetNetworkCapabilities
メソッドの引数にconnectivityManager.activeNetwork
を渡すことでネットワークの接続状況を取得するためのNetworkCapabilitiesインスタンスを取得できます。
インターネット接続の種類を識別する
オンライン(Wi-Fi or キャリア通信)やオフラインかを識別するためには以下のように実装します。NetworkCapabilities
自体が取得できていなければオフライン環境ということになります。
ネットワーク接続状態を監視する方法
ネットワーク接続状態を監視してなんらかの処理を実装するにはNetworkRequest
を使用します。先に手順をまとめていきます。
ネットワーク接続状態を取得する手順
- マニフェストファイルにパーミッションを追加
- ConnectivityManagerインスタンスを取得
- NetworkRequestインスタンスを生成
- 監視用コールバックの実装
- ConnectivityManagerにセット
1.マニフェストファイルにパーミッションを追加
ネットワーク接続状態を監視可能にするためにはマニフェストファイルに以下を記述する必要があります。
2.ConnectivityManagerインスタンスを取得
ConnectivityManager
インスタンスは先ほどと同じ手順です。
3.NetworkRequestインスタンスを生成
NetworkRequest
インスタンスを作成する際に監視したいネットワークを指定します。
3.監視用コールバックの実装
ネットワーク状態が変化した際に呼ばれるコールバック(ConnectivityManager.NetworkCallback)を実装します。それぞれのメソッドから以下の変化を検知することができるようになります。
onCapabilitiesChanged
の特性とはWi-Fiからキャリア通信などの変化を検知することができるようになります。
4.ConnectivityManagerにセット
最後にConnectivityManager
にNetworkRequest
とConnectivityManager.NetworkCallback
をセットすれば完了です。この状態でネットワーク状態が変化するたびにそれぞれのコールバックメソッドが呼ばれるようになります。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。