Ein in Kotlin geschriebenes leichtes Modul zum Überwachung des Netzwerkstaates und des Flugzeugmodus im nativen Android.
NetworkValidator bietet Echtzeit-Netzwerkverfügbarkeit und Flugzeugmodusüberwachung.



Stromversion: 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 >Wenn es sich um eine Snapshot -Version handelt, fügen Sie das Snapshot Maven Nexus OSS -Repository hinzu:
maven {
url ' https://s01.oss.sonatype.org/content/repositories/snapshots/ '
}Rufen Sie dann eine Kopie ab:
implementation ' io.github.iodevblue:parallaxnavigationdrawer:current-version 'libs und installieren Sie es in Ihrem Projekt. implementation fileTree( dir : ' libs ' , include : ' *jar ' )Hinweis: Minimum unterstütztes Android SDK -Version = 23
Erstellen Sie mit einem Context eine NetworkValidator -Instanz:
val networkValidator = NetworkValidator (context)Überprüfen Sie, ob auf einem Gerät eine Internetverbindung vorhanden ist:
val isOnline = networkValidator.isOnline()
if (isOnline) {
retrieveFromRemoteRepo()
} else {
retrieveFromLocalCache()
}Überprüfen Sie, ob eine Internetverbindung über WLAN besteht:
val isWifiAvail = networkValidator.isWifiAvailable()
if (isWifiAvail) {
startPackageDownloading()
} else {
informUser()
}Überprüfen Sie, ob eine Internetverbindung über mobile Daten vorhanden ist:
val isMobileDataOn = networkValidator.isCellularAvailable()
if (isMobileDataOn) {
connectToServer()
} else {
disconnectFromServer()
}
Überprüfen Sie, ob der Flugzeugmodus eingeschaltet ist:
val isOnAirplane = networkValidator.isAirplaneModeActive()
if (isOnAirplane) {
disconnectFromServer()
} else {
doSomethingRemotely()
}
Um Änderungen der Internetverfügbarkeit auf dem Gerät (sowohl WLAN- als auch mobile Daten) anzuhören, legen Sie eine OnNetworkChangedListener -Instanz fest:
val networkValidator = NetworkValidator (context)
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
if (isOnline) {
contactRemoteServer()
}
}
} Oder wenden Sie ein OnNetworkChangedListener mit einer Kotlin -Empfängerfunktionssyntax an:
networkValidator.setOnNetworkStateChangedListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} HINWEIS: Der Rückruf onNetworkChanged() und die setOnNetworkStateChangedListener {...} -Erhaltungsfunktion werden alle in einem Hintergrund Thread ausgeführt. Das heißt, Benutzeroberflächenfunktionen, die auf Netzwerkänderungen reagieren, müssen in einem UI Thread wie bei einer Android Activity ausgeführt werden:
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
runOnUiThread {
if (isOnline) {
contactRemoteServer()
}
}
}
} Um sich auf Änderungen des Flugzeugmodus anzuhören, setzen Sie eine OnAirplaneModeSwitchListener -Instanz fest:
networkValidator.onAirplaneModeSwitchListener = object : NetworkValidator . OnAirplaneModeSwitchListener {
override fun onChanged ( turnedOn : Boolean ) {
if (turnedOn) {
pauseRemoteConnection()
}
}
} Oder wenden Sie eine OnAirplaneModeSwitchListener mit einer Kotlin -Empfängerfunktionssyntax an:
networkValidator.setOnAirplaneModeSwitchListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} Außerdem müssen die Funktion onChanged() setOnAirplaneModeSwitchListener {...} Receivers -Funktion OnNetworkChangedListener einem Hintergrund Thread auf Thread Flugzeugmodus Änderungen reagieren.
HINWEIS: NetworkValidator verwendet einen internen BroadcastReceiver , der den Empfang von Ereignissen des Flugzeugmodus verändert. Er wird automatisch registriert, wenn eine Instanz eines OnAirplaneModeSwitchListener definiert ist. Es ist nicht registriert und annulliert, wenn der OnAirplaneModeSwitchListener aufgehoben wird.
(Weitere Informationen finden Sie unter Bibliothekscode)
Dieser interne BroadcastReceiver muss jedoch nicht registriert werden, wenn ein NetworkValidator nicht verwendet wird, um Speicherlecks zu vermeiden.
In einer Android Activity kann es wie SO erfolgen:
override fun onResume () {
super .onResume()
networkValidator.registerAirplaneModeSwitchListener
}
override fun onPause () {
super .onPause()
networkValidator.unregisterAirplaneModeSwitchListener
} Die Kotliner -Erweiterungs -Empfängerfunktionen (Erweiterungen in einem Context ) sind ebenfalls enthalten, um die Einstellung der Eingabeaufforderung zu unterstützen:
networkValidator{} Gibt eine gültige NetworkValidator -Instanz zurück:
networkValidator {
setOnNetworkStateChangedListener { b, _ ->
runOnUiThread {
tv.text = resources.getString( R .string.detect_network)
showProgress()
updateNetworkState(b)
}
}
} listenForNetwork{} erstellt intern einen NetworkValidator und registriert ein OnNetworkChangedListener , das sofort zuhören beginnt:
listenForNetwork { b, network ->
if (b) {
updateNetworkState(b)
reInitializeRemoteConnection()
} else {
invalidateRemoteConnection()
informUser()
}
} listenForAirplaneModeChanges{} Gibt einen NetworkValidator zurück und registriert einen OnAirplaneModeSwitchListener , der sofort zuhören beginnt:
val networkValidator = listenForAirplaneModeChanges {
if (it) {
cancelRemoteConnection()
} else {
reInitializeRemoteConnection()
}
} Die zurückgegebene NetworkValidator -Instanz kann dann verwendet werden, um register() und unregister() den internen BroadcastReceiver zu registrieren.
Dieses Modul ist mit Java vollständig interoperabel.
Hinweis: Erweiterungsfunktionen sind in Java nicht anwendbar.
Erstellen Sie eine NetworkValidator -Instanz:
NetworkValidator networkValidator = new NetworkValidator ( this );Überprüfen Sie, ob auf einem Gerät eine Internetverbindung vorhanden ist:
boolean isOnline = networkValidator . isOnline ();
if ( isOnline ) {
retrieveFromRemoteRepo ();
} else {
retrieveFromLocalCache ();
}Überprüfen Sie, ob eine Internetverbindung über WLAN besteht:
boolean isWifiAvail = networkValidator . isWifiAvailable ();
if ( isWifiAvail ) {
startPackageDownloading ();
} else {
informUser ();
}Überprüfen Sie, ob eine Internetverbindung über mobile Daten vorhanden ist:
boolean isMobileDataOn = networkValidator . isCellularAvailable ();
if ( isMobileDataOn ) {
connectToServer ();
} else {
disconnectFromServer ();
}Überprüfen Sie, ob der Flugzeugmodus eingeschaltet ist:
boolean isOnAirplane = networkValidator . isAirplaneModeActive ();
if ( isOnAirplane ) {
disconnectFromServer ();
} else {
doSomethingRemotely ();
} Um Änderungen der Internetverfügbarkeit auf dem Gerät (sowohl WLAN- als auch mobile Daten) anzuhören, legen Sie eine OnNetworkChangedListener -Instanz fest:
NetworkValidator networkValidator = new NetworkValidator ( this );
networkValidator . setOnNetworkChangedListener (( isOnline , network ) -> {
if ( isOnline ) {
contactRemoteServer ();
}
} Um sich auf Änderungen des Flugzeugmodus anzuhören, setzen Sie eine OnAirplaneModeSwitchListener -Instanz fest:
networkValidator . setOnAirplaneModeSwitchListener ( turnedOn -> {
if ( turnedOn ) {
pauseRemoteConnection ();
}
}Konfigurationen:
| Variable | Standard | Verwenden |
|---|---|---|
onNetworkChangedListener | NULL | Hörer für Änderungen des Netzwerkstaates. |
onAirplaneModeSwitchListener | NULL | Hörer für den Flugzeugmodus ändert sich. |
| Verfahren | Zurück | Verwenden |
|---|---|---|
isOnline() | Boolean | Validiert, wenn eine Internetverbindung vorhanden ist. |
isWifiAvailable() | Boolean | Validiert, wenn die Internetverbindung über WLAN verfügbar ist. |
isCellularAvailable() | Boolean | Validiert, wenn die Internetverbindung über mobile Daten verfügbar ist. |
isAirplaneModeActive() | Boolean | Valides ist der Flugzeugmodus aktiv. |
unregisterAirplaneModeSwitchListener() | Einheit | Unregister den onAirplaneModeSwitchListener vom Anhören von Ereignissen des Flugzeugmodus. |
registerAirplaneModeSwitchListener() | Einheit | Registriert den onAirplaneModeSwitchListener , um nach den Ereignissen des Flugzeugmodus zu hören. |
setOnNetworkStateChangedListener(execute: OnNetworkChangedListener.(Boolean, Network) -> Unit) | Einheit | Legt einen Network Change -Hörer fest. |
setOnAirplaneModeSwitchListener(execute: OnAirplaneModeSwitchListener.(Boolean) -> Unit) | Einheit | Legt einen Flugzeugmodusschalter -Hörer fest. |
Mitwirkende sind willkommen!
Hinweis: Dieses Repository ist in zwei Zweige aufgeteilt:
Alle Entwicklungsimplementierungen und vorgeschlagenen Änderungen werden in den Entwicklungszweig übertroffen und die endgültigen Aktualisierungen werden in die Hauptzweide gebracht.
Um zu beachten, ob aktuelle Entwicklungen durchgeführt werden, gibt es im Entwicklungszweig mehr Commits als in der Hauptzweig.
Weitere Informationen finden Sie im Beitrag.
Weitere Versionsverlauf können aus der Änderungsprotokolldatei erhalten werden.
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.