¿Cómo puedo controlar el estado de la conexión de red en Android?

Tengo un servicio que está descargando un archivo de un servidor. Advierto al usuario que solo descargue el archivo a través de LAN inalámbrica antes de que comience la descarga.

Mi problema es que mi descarga se bloquea si pierdo la conexión de red. ¿Hay alguna manera de escuchar los cambios en la conexión de red o si se pierde por completo?

Escucha por CONNECTIVITY_ACTION

Esto se ve como un buen código de muestra . Aquí hay un fragmento:

BroadcastReceiver networkStateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.w("Network Listener", "Network Type Changed"); } }; IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(networkStateReceiver, filter);