
ググると公式リファレンスが見つかる。
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork: NetworkInfo? = cm.activeNetworkInfo
val isConnected: Boolean = activeNetwork?.isConnectedOrConnecting == true
しかし、このコードはAPI29で非推奨。
Note: getActiveNetworkInfo() was deprecated in Android 10. Use NetworkCallbacks instead for apps that target Android 10 (API level 29) and higher.
👉 Monitor connectivity status and connection metering 
Android 10 で通信状態の変更を監視するには、 ConnectivityManager.registerNetworkCallback() を使いましょう。
👉 Android 10 時代の Connectivity Monitoring - takasfz blog 
- コールバックの登録/解除のタイミングはライフサイクルに依存する。
- コールバック onAvailable()/onLost() は、非メインスレッド上で受信。
よって、MVVM上で使うとなると、LiveData化するのが良さげ。
class ConnectivityLiveData @VisibleForTesting internal constructor(private val connectivityManager: ConnectivityManager)
    : LiveData<Boolean>() {
    @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
    constructor(application: Application) : this(application.getSystemService(Context.CONNECTIVITY_SERVICE)
        as ConnectivityManager)
    private val networkCallback = object : ConnectivityManager.NetworkCallback() {
        override fun onAvailable(network: Network?) {
            postValue(true)
        }
        override fun onLost(network: Network?) {
            postValue(false)
        }
    }
    override fun onActive() {
        super.onActive()
        val activeNetwork: NetworkInfo? = connectivityManager.activeNetworkInfo
        postValue(activeNetwork?.isConnectedOrConnecting == true)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            connectivityManager.registerDefaultNetworkCallback(networkCallback)
        } else {
            val builder = NetworkRequest.Builder()
            connectivityManager.registerNetworkCallback(builder.build(), networkCallback)
        }
    }
    override fun onInactive() {
        super.onInactive()
        connectivityManager.unregisterNetworkCallback(networkCallback)
    }
}
👉 ConnectivityLiveData - AndroidPub 
まとめ
ただ「ネットが使える/使えない」を判定させるだけの実装がここまでややこしいSDKてのは問題じゃねえか?!
みんな混乱してるようにみえるけども。
もっといい感じがあれば教えてね!
 
		 
          