Un módulo liviano escrito en Kotlin para monitorear el estado de red y el modo de avión en Android nativo.
NetworkValidator proporciona disponibilidad de red en tiempo real y monitoreo del modo de avión.



Versión actual: 1.0.0-snapshot
implementation ' io.github.iodevblue:networkvalidator:current-version '< dependency >
< groudId > io.github.iodevblue </ groudId >
< artifactId > parallaxnavigationdrawer </ artifactId >
< version > current-version </ version >
</ dependency >Si se trata de una versión de instantánea, agregue la instantánea Maven Nexus OSS Repository:
maven {
url ' https://s01.oss.sonatype.org/content/repositories/snapshots/ '
}Luego recupere una copia:
implementation ' io.github.iodevblue:parallaxnavigationdrawer:current-version 'libs en su módulo de proyecto e instale en su proyecto. implementation fileTree( dir : ' libs ' , include : ' *jar ' )Nota: Versión SDK de Android mínima compatible = 23
Cree una instancia NetworkValidator utilizando un Context :
val networkValidator = NetworkValidator (context)Validar si hay conexión a Internet en un dispositivo:
val isOnline = networkValidator.isOnline()
if (isOnline) {
retrieveFromRemoteRepo()
} else {
retrieveFromLocalCache()
}Valide si hay conexión a Internet a través de WiFi:
val isWifiAvail = networkValidator.isWifiAvailable()
if (isWifiAvail) {
startPackageDownloading()
} else {
informUser()
}Valide si hay conexión a Internet a través de datos móviles:
val isMobileDataOn = networkValidator.isCellularAvailable()
if (isMobileDataOn) {
connectToServer()
} else {
disconnectFromServer()
}
Valide si el modo avión está activado:
val isOnAirplane = networkValidator.isAirplaneModeActive()
if (isOnAirplane) {
disconnectFromServer()
} else {
doSomethingRemotely()
}
Para escuchar los cambios en la disponibilidad de Internet en el dispositivo (datos WiFi y móvil), establezca una instancia OnNetworkChangedListener :
val networkValidator = NetworkValidator (context)
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
if (isOnline) {
contactRemoteServer()
}
}
} O aplique un OnNetworkChangedListener utilizando una sintaxis de función de receptor Kotlin:
networkValidator.setOnNetworkStateChangedListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} Nota: la devolución de llamada onNetworkChanged() y el setOnNetworkStateChangedListener {...} Función del receptor se ejecuta en un Thread de fondo. Eso significa que las funciones de la interfaz de usuario que responden a los cambios de red deben ejecutarse en un Thread de la interfaz de usuario como así en una Activity de Android:
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
runOnUiThread {
if (isOnline) {
contactRemoteServer()
}
}
}
} Para escuchar los cambios en el modo de avión, establezca una instancia de OnAirplaneModeSwitchListener :
networkValidator.onAirplaneModeSwitchListener = object : NetworkValidator . OnAirplaneModeSwitchListener {
override fun onChanged ( turnedOn : Boolean ) {
if (turnedOn) {
pauseRemoteConnection()
}
}
} O aplique un OnAirplaneModeSwitchListener utilizando una sintaxis de función del receptor Kotlin:
networkValidator.setOnAirplaneModeSwitchListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} Además, la devolución de llamada onChanged() y el setOnAirplaneModeSwitchListener {...} Función receptor Ejecuta en un Thread de fondo, por lo tanto, las funciones de la interfaz de usuario que responden a los cambios en el modo de avión deben ejecutarse en un Thread interfaz de usuario de la misma manera que el OnNetworkChangedListener .
Nota: NetworkValidator utiliza un BroadcastReceiver interno que maneja los eventos de cambio de modo de recepción del modo de avión y se registra automáticamente cuando se define una instancia OnAirplaneModeSwitchListener . No está registrado y anulado cuando el OnAirplaneModeSwitchListener está anulado.
(Consulte el código de la biblioteca para obtener más detalles)
Sin embargo, este BroadcastReceiver interno no debe registrarse cuando un NetworkValidator no está en uso para evitar fugas de memoria.
En una Activity de Android, se puede hacer así:
override fun onResume () {
super .onResume()
networkValidator.registerAirplaneModeSwitchListener
}
override fun onPause () {
super .onPause()
networkValidator.unregisterAirplaneModeSwitchListener
} Las funciones del receptor de extensión de Kotlin (extensiones en un Context ) también se incluyen para ayudar en la configuración rápida:
networkValidator{} Devuelve una instancia válida de NetworkValidator:
networkValidator {
setOnNetworkStateChangedListener { b, _ ->
runOnUiThread {
tv.text = resources.getString( R .string.detect_network)
showProgress()
updateNetworkState(b)
}
}
} listenForNetwork{} Interna crea un Validator Network y registra un OnNetworkChangedListener que comienza a escuchar de inmediato:
listenForNetwork { b, network ->
if (b) {
updateNetworkState(b)
reInitializeRemoteConnection()
} else {
invalidateRemoteConnection()
informUser()
}
} listenForAirplaneModeChanges{} Devuelve un NetworkValidator y registra un OnAirplaneModeSwitchListener que comienza a escuchar de inmediato:
val networkValidator = listenForAirplaneModeChanges {
if (it) {
cancelRemoteConnection()
} else {
reInitializeRemoteConnection()
}
} La instancia NetworkValidator devuelta se puede usar para register() y unregister() el BroadcastReceiver interno.
Este módulo es completamente interoperable con Java.
Nota: Las funciones de extensión no son aplicables en Java.
Cree una instancia NetworkValidator :
NetworkValidator networkValidator = new NetworkValidator ( this );Validar si hay conexión a Internet en un dispositivo:
boolean isOnline = networkValidator . isOnline ();
if ( isOnline ) {
retrieveFromRemoteRepo ();
} else {
retrieveFromLocalCache ();
}Valide si hay conexión a Internet a través de WiFi:
boolean isWifiAvail = networkValidator . isWifiAvailable ();
if ( isWifiAvail ) {
startPackageDownloading ();
} else {
informUser ();
}Valide si hay conexión a Internet a través de datos móviles:
boolean isMobileDataOn = networkValidator . isCellularAvailable ();
if ( isMobileDataOn ) {
connectToServer ();
} else {
disconnectFromServer ();
}Valide si el modo avión está activado:
boolean isOnAirplane = networkValidator . isAirplaneModeActive ();
if ( isOnAirplane ) {
disconnectFromServer ();
} else {
doSomethingRemotely ();
} Para escuchar los cambios en la disponibilidad de Internet en el dispositivo (datos WiFi y móvil), establezca una instancia OnNetworkChangedListener :
NetworkValidator networkValidator = new NetworkValidator ( this );
networkValidator . setOnNetworkChangedListener (( isOnline , network ) -> {
if ( isOnline ) {
contactRemoteServer ();
}
} Para escuchar los cambios en el modo de avión, establezca una instancia de OnAirplaneModeSwitchListener :
networkValidator . setOnAirplaneModeSwitchListener ( turnedOn -> {
if ( turnedOn ) {
pauseRemoteConnection ();
}
}Configuraciones:
| Variable | Por defecto | Usar |
|---|---|---|
onNetworkChangedListener | nulo | Oyente para cambios en el estado de red. |
onAirplaneModeSwitchListener | nulo | Oyente para cambios en el modo de avión. |
| Método | Devolución | Usar |
|---|---|---|
isOnline() | Booleano | Valida si hay conexión a Internet. |
isWifiAvailable() | Booleano | Valida si la conexión a Internet está disponible a través de WiFi. |
isCellularAvailable() | Booleano | Valida si la conexión a Internet está disponible a través de datos móviles. |
isAirplaneModeActive() | Booleano | Valida es el modo de avión está activo. |
unregisterAirplaneModeSwitchListener() | Unidad | UnRregisters el onAirplaneModeSwitchListener de escuchar eventos en modo de avión. |
registerAirplaneModeSwitchListener() | Unidad | Registra el onAirplaneModeSwitchListener para comenzar a escuchar eventos de modo de avión. |
setOnNetworkStateChangedListener(execute: OnNetworkChangedListener.(Boolean, Network) -> Unit) | Unidad | Establece un oyente de cambio de red. |
setOnAirplaneModeSwitchListener(execute: OnAirplaneModeSwitchListener.(Boolean) -> Unit) | Unidad | Establece un oyente de interruptor de modo de avión. |
¡Los contribuyentes son bienvenidos!
Nota: Este repositorio se divide en dos ramas:
Todas las implementaciones en desarrollo y los cambios propuestos se llevan a la rama de desarrollo y las actualizaciones finalizadas se llevan a la rama principal.
Para tener en cuenta que si se están realizando desarrollos actuales, habría más compromisos en la rama de desarrollo que en la rama principal.
Consulte la contribución para obtener más información.
Se puede obtener más historial de versiones del archivo de registro de cambio.
Copyright 2023 IO DevBlue
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.