¿Detectando conectividad de red limitada en Android?

Hay una serie de preguntas sobre cómo detectar la conectividad de red en Android.https://stackoverflow.com/a/4239019/90236 proporciona una respuesta muy detallada yhttps://stackoverflow.com/a/8548926/90236 muestra métodos para identificar el tipo de red a la que se conecta.

Detectamos la conectividad de la red utilizando un código similar a las respuestas como:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

Esto nos permite advertir a un usuario si están fuera de línea. Sin embargo, no nos ayuda a identificar si un usuario tiene conectividad limitada. Existen condiciones de conectividad limitada que han hecho que los usuarios se quejen. Éstos incluyen:

Los usuarios están conectados a una red wifi doméstica, pero el módem por cable o el servicio de Internet no están disponibles.

Los usuarios están en un hotel o cafetería y se conectan con éxito a una red wifi, pero la red requiere que inicien sesión o acepten los términos de servicio antes de que se les otorgue acceso completo a la red.

En ambas situaciones, nuestra prueba isNetworkAvailable () devuelve true. El sistema operativo nos dice que estamos conectados a una red. Sin embargo, el usuario no tiene conectividad a internet utilizable.

¿Hay una buena manera de determinar que el usuario tiene una conexión de red completamente funcional?

Estoy considerando llamar a un servicio web ligero para verificar su conectividad y advertir al usuario si la aplicación no obtiene un retorno válido del servicio. ¿Esto es una exageración? ¿O han tenido otros que recurrir a técnicas similares?

Respuestas a la pregunta(2)

Su respuesta a la pregunta