Un module léger écrit en Kotlin pour surveiller l'état du réseau et le mode avion sur Android natif.
NetworkValidator offre la disponibilité du réseau en temps réel et la surveillance du mode avion.



Version actuelle: 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 >S'il s'agit d'une version instantanée, ajoutez le référentiel Sosshot Maven Nexus OSS:
maven {
url ' https://s01.oss.sonatype.org/content/repositories/snapshots/ '
}Puis récupérer une copie:
implementation ' io.github.iodevblue:parallaxnavigationdrawer:current-version 'libs dans votre module de projet et installez-vous dans votre projet. implementation fileTree( dir : ' libs ' , include : ' *jar ' )Remarque: Version du SDK Android à prise en charge minimale = 23
Créez une instance NetworkValidator à l'aide d'un Context :
val networkValidator = NetworkValidator (context)Valider s'il y a une connexion Internet sur un appareil:
val isOnline = networkValidator.isOnline()
if (isOnline) {
retrieveFromRemoteRepo()
} else {
retrieveFromLocalCache()
}Valider s'il y a une connexion Internet via WiFi:
val isWifiAvail = networkValidator.isWifiAvailable()
if (isWifiAvail) {
startPackageDownloading()
} else {
informUser()
}Valider s'il y a une connexion Internet via des données mobiles:
val isMobileDataOn = networkValidator.isCellularAvailable()
if (isMobileDataOn) {
connectToServer()
} else {
disconnectFromServer()
}
Valider si le mode avion est activé:
val isOnAirplane = networkValidator.isAirplaneModeActive()
if (isOnAirplane) {
disconnectFromServer()
} else {
doSomethingRemotely()
}
Pour écouter les modifications de la disponibilité d'Internet sur l'appareil (les données WiFi et mobiles), définissez une instance OnNetworkChangedListener :
val networkValidator = NetworkValidator (context)
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
if (isOnline) {
contactRemoteServer()
}
}
} Ou appliquez une OnNetworkChangedListener à l'aide d'une syntaxe de fonction du récepteur Kotlin:
networkValidator.setOnNetworkStateChangedListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} Remarque: le rappel onNetworkChanged() et la fonction setOnNetworkStateChangedListener {...} Le récepteur s'exécute tous dans un Thread d'arrière-plan. Cela signifie que les fonctions d'interface utilisateur qui répondent aux modifications du réseau doivent être exécutées sur un Thread d'interface utilisateur comme ainsi sur une Activity Android:
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
runOnUiThread {
if (isOnline) {
contactRemoteServer()
}
}
}
} Pour écouter les modifications du mode avion, définissez une instance OnAirplaneModeSwitchListener :
networkValidator.onAirplaneModeSwitchListener = object : NetworkValidator . OnAirplaneModeSwitchListener {
override fun onChanged ( turnedOn : Boolean ) {
if (turnedOn) {
pauseRemoteConnection()
}
}
} Ou appliquez une OnAirplaneModeSwitchListener en utilisant une syntaxe de fonction du récepteur Kotlin:
networkValidator.setOnAirplaneModeSwitchListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} De plus, le rappel onChanged() et la fonction setOnAirplaneModeSwitchListener {...} récepteur exécutent tous dans un Thread d'arrière-plan, donc, les fonctions d'interface utilisateur qui répondent aux modifications du mode avion doivent être exécutées sur un Thread d'interface utilisateur de la même manière que l' OnNetworkChangedListener .
Remarque: NetworkValidator utilise un BroadcastReceiver interne qui gère les événements de changement de mode avion et il est automatiquement enregistré lorsqu'une instance OnAirplaneModeSwitchListener est définie. Il n'est pas enregistré et annulé lorsque l' OnAirplaneModeSwitchListener est annulé.
(Voir code de bibliothèque pour plus de détails)
Cependant, ce BroadcastReceiver interne doit être non enregistré lorsqu'une NetworkValidator n'est pas utilisée pour éviter les fuites de mémoire.
Dans une Activity Android, cela peut être fait comme ça:
override fun onResume () {
super .onResume()
networkValidator.registerAirplaneModeSwitchListener
}
override fun onPause () {
super .onPause()
networkValidator.unregisterAirplaneModeSwitchListener
} Les fonctions du récepteur d'extension Kotlin (extensions sur un Context ) sont également incluses pour aider à la configuration de l'invite:
networkValidator{} Renvoie une instance NetworkValidator valide:
networkValidator {
setOnNetworkStateChangedListener { b, _ ->
runOnUiThread {
tv.text = resources.getString( R .string.detect_network)
showProgress()
updateNetworkState(b)
}
}
} listenForNetwork{} crée en interne un réseau de réseau et enregistre un OnNetworkChangedListener qui commence à écouter immédiatement:
listenForNetwork { b, network ->
if (b) {
updateNetworkState(b)
reInitializeRemoteConnection()
} else {
invalidateRemoteConnection()
informUser()
}
} listenForAirplaneModeChanges{} renvoie un réseau de réseau et enregistre un OnAirplaneModeSwitchListener qui commence à écouter immédiatement:
val networkValidator = listenForAirplaneModeChanges {
if (it) {
cancelRemoteConnection()
} else {
reInitializeRemoteConnection()
}
} L'instance NetworkValidator renvoyée peut ensuite être utilisée pour register() et unregister() le BroadcastReceiver interne.
Ce module est complètement interopérable avec Java.
Remarque: les fonctions d'extension ne sont pas applicables dans Java.
Créer une instance NetworkValidator :
NetworkValidator networkValidator = new NetworkValidator ( this );Valider s'il y a une connexion Internet sur un appareil:
boolean isOnline = networkValidator . isOnline ();
if ( isOnline ) {
retrieveFromRemoteRepo ();
} else {
retrieveFromLocalCache ();
}Valider s'il y a une connexion Internet via WiFi:
boolean isWifiAvail = networkValidator . isWifiAvailable ();
if ( isWifiAvail ) {
startPackageDownloading ();
} else {
informUser ();
}Valider s'il y a une connexion Internet via des données mobiles:
boolean isMobileDataOn = networkValidator . isCellularAvailable ();
if ( isMobileDataOn ) {
connectToServer ();
} else {
disconnectFromServer ();
}Valider si le mode avion est activé:
boolean isOnAirplane = networkValidator . isAirplaneModeActive ();
if ( isOnAirplane ) {
disconnectFromServer ();
} else {
doSomethingRemotely ();
} Pour écouter les modifications de la disponibilité d'Internet sur l'appareil (les données WiFi et mobiles), définissez une instance OnNetworkChangedListener :
NetworkValidator networkValidator = new NetworkValidator ( this );
networkValidator . setOnNetworkChangedListener (( isOnline , network ) -> {
if ( isOnline ) {
contactRemoteServer ();
}
} Pour écouter les modifications du mode avion, définissez une instance OnAirplaneModeSwitchListener :
networkValidator . setOnAirplaneModeSwitchListener ( turnedOn -> {
if ( turnedOn ) {
pauseRemoteConnection ();
}
}Configurations:
| Variable | Défaut | Utiliser |
|---|---|---|
onNetworkChangedListener | nul | Écouteur pour les changements d'état de réseau. |
onAirplaneModeSwitchListener | nul | Écouteur du mode avion modifie. |
| Méthode | Rendements | Utiliser |
|---|---|---|
isOnline() | Booléen | Valide s'il y a une connexion Internet. |
isWifiAvailable() | Booléen | Valide si la connexion Internet est disponible via WiFi. |
isCellularAvailable() | Booléen | Valide si la connexion Internet est disponible via des données mobiles. |
isAirplaneModeActive() | Booléen | Les validates sont le mode avion est actif. |
unregisterAirplaneModeSwitchListener() | Unité | Définit le onAirplaneModeSwitchListener en écoutant les événements du mode Airplane. |
registerAirplaneModeSwitchListener() | Unité | Inregistre le onAirplaneModeSwitchListener pour commencer à écouter les événements du mode Airplane. |
setOnNetworkStateChangedListener(execute: OnNetworkChangedListener.(Boolean, Network) -> Unit) | Unité | Définit un écouteur de changement de réseau. |
setOnAirplaneModeSwitchListener(execute: OnAirplaneModeSwitchListener.(Boolean) -> Unit) | Unité | Définit un écouteur de commutateur en mode avion. |
Les contributeurs sont les bienvenus!
Remarque: ce référentiel est divisé en deux branches:
Toutes les implémentations en développement et les modifications proposées sont poussées à la branche de développement et les mises à jour finalisées sont poussées vers la branche principale.
Pour noter que si les développements actuels sont en cours, il y aurait plus de validations dans la branche de développement que dans la branche principale.
Vérifiez la contribution pour plus d'informations.
Plus d'historique de version peut être obtenu à partir du fichier journal de modification.
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.