Легкий модуль, записанный в Kotlin для мониторинга состояния сети и режима самолета на Native Android.
NetworkValidator обеспечивает доступность сети в реальном времени и мониторинг режима самолета.



Ток-версия: 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 >Если это версия снимка, добавьте репозиторий Maven Nexus OSS:
maven {
url ' https://s01.oss.sonatype.org/content/repositories/snapshots/ '
}Затем получить копию:
implementation ' io.github.iodevblue:parallaxnavigationdrawer:current-version 'libs в модуль проекта и установите в свой проект. implementation fileTree( dir : ' libs ' , include : ' *jar ' )Примечание: минимальная поддерживаемая версия Android SDK = 23
Создайте экземпляр NetworkValidator , используя Context :
val networkValidator = NetworkValidator (context)Проверить, есть ли подключение к Интернету на устройстве:
val isOnline = networkValidator.isOnline()
if (isOnline) {
retrieveFromRemoteRepo()
} else {
retrieveFromLocalCache()
}Проверить, есть ли подключение к Интернету через Wi -Fi:
val isWifiAvail = networkValidator.isWifiAvailable()
if (isWifiAvail) {
startPackageDownloading()
} else {
informUser()
}Проверить, есть ли подключение к Интернету через мобильные данные:
val isMobileDataOn = networkValidator.isCellularAvailable()
if (isMobileDataOn) {
connectToServer()
} else {
disconnectFromServer()
}
Проверить, включен ли режим самолета:
val isOnAirplane = networkValidator.isAirplaneModeActive()
if (isOnAirplane) {
disconnectFromServer()
} else {
doSomethingRemotely()
}
Чтобы прослушать изменения в доступности Интернета на устройстве (как Wi -Fi, так и мобильные данные), установите экземпляр OnNetworkChangedListener :
val networkValidator = NetworkValidator (context)
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
if (isOnline) {
contactRemoteServer()
}
}
} Или применить OnNetworkChangedListener , используя синтаксис функции приемника Kotlin:
networkValidator.setOnNetworkStateChangedListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} Примечание. Обратный вызов onNetworkChanged() и setOnNetworkStateChangedListener {...} Функция приемника все выполняются в фоновом Thread . Это означает, что функции пользовательского интерфейса, которые реагируют на изменения сети, должны выполняться в Thread пользовательского интерфейса, как на Android Activity :
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
runOnUiThread {
if (isOnline) {
contactRemoteServer()
}
}
}
} Чтобы прослушать изменения режима самолета, установите экземпляр OnAirplaneModeSwitchListener :
networkValidator.onAirplaneModeSwitchListener = object : NetworkValidator . OnAirplaneModeSwitchListener {
override fun onChanged ( turnedOn : Boolean ) {
if (turnedOn) {
pauseRemoteConnection()
}
}
} Или применить OnAirplaneModeSwitchListener , используя синтаксис функции приемника Kotlin:
networkValidator.setOnAirplaneModeSwitchListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} Кроме того, обратный вызов onChanged() и функция приемника setOnAirplaneModeSwitchListener {...} все выполняются в фоновом Thread , поэтому функции пользовательского интерфейса, которые отвечают на изменения режима самолета, должны выполняться на Thread пользовательского интерфейса так же, как и OnNetworkChangedListener .
ПРИМЕЧАНИЕ. NetworkValidator использует внутренний BroadcastReceiver , который обрабатывает получение событий режима самолета, и он автоматически зарегистрирован, когда определяется экземпляр OnAirplaneModeSwitchListener . Это незарегистрировано и аннулировано, когда OnAirplaneModeSwitchListener аннулирован.
(См. Код библиотеки для получения более подробной информации)
Однако этот внутренний BroadcastReceiver должен быть незарегистрирован, когда NetworkValidator не используется, чтобы избежать утечек памяти.
В Activity Android это можно сделать так:
override fun onResume () {
super .onResume()
networkValidator.registerAirplaneModeSwitchListener
}
override fun onPause () {
super .onPause()
networkValidator.unregisterAirplaneModeSwitchListener
} Функции приемника расширения Kotlin также включены для помощи в настройке быстрого Context :
networkValidator{} возвращает действительный экземпляр NetworkValidator:
networkValidator {
setOnNetworkStateChangedListener { b, _ ->
runOnUiThread {
tv.text = resources.getString( R .string.detect_network)
showProgress()
updateNetworkState(b)
}
}
} listenForNetwork{} Внутренне создает сетевой категорист и регистрирует OnNetworkChangedListener , который начинает немедленно слушать:
listenForNetwork { b, network ->
if (b) {
updateNetworkState(b)
reInitializeRemoteConnection()
} else {
invalidateRemoteConnection()
informUser()
}
} listenForAirplaneModeChanges{} Возвращает сетевой вертел и регистрирует OnAirplaneModeSwitchListener , который начинает немедленно слушать:
val networkValidator = listenForAirplaneModeChanges {
if (it) {
cancelRemoteConnection()
} else {
reInitializeRemoteConnection()
}
} Возвращенный экземпляр NetworkValidator может затем использоваться для register() и unregister() внутреннего BroadcastReceiver .
Этот модуль полностью совместим с Java.
Примечание. Функции расширения не применимы в Java.
Создайте экземпляр NetworkValidator :
NetworkValidator networkValidator = new NetworkValidator ( this );Проверить, есть ли подключение к Интернету на устройстве:
boolean isOnline = networkValidator . isOnline ();
if ( isOnline ) {
retrieveFromRemoteRepo ();
} else {
retrieveFromLocalCache ();
}Проверить, есть ли подключение к Интернету через Wi -Fi:
boolean isWifiAvail = networkValidator . isWifiAvailable ();
if ( isWifiAvail ) {
startPackageDownloading ();
} else {
informUser ();
}Проверить, есть ли подключение к Интернету через мобильные данные:
boolean isMobileDataOn = networkValidator . isCellularAvailable ();
if ( isMobileDataOn ) {
connectToServer ();
} else {
disconnectFromServer ();
}Проверить, включен ли режим самолета:
boolean isOnAirplane = networkValidator . isAirplaneModeActive ();
if ( isOnAirplane ) {
disconnectFromServer ();
} else {
doSomethingRemotely ();
} Чтобы прослушать изменения в доступности Интернета на устройстве (как Wi -Fi, так и мобильные данные), установите экземпляр OnNetworkChangedListener :
NetworkValidator networkValidator = new NetworkValidator ( this );
networkValidator . setOnNetworkChangedListener (( isOnline , network ) -> {
if ( isOnline ) {
contactRemoteServer ();
}
} Чтобы прослушать изменения режима самолета, установите экземпляр OnAirplaneModeSwitchListener :
networkValidator . setOnAirplaneModeSwitchListener ( turnedOn -> {
if ( turnedOn ) {
pauseRemoteConnection ();
}
}Конфигурации:
| Переменная | По умолчанию | Использовать |
|---|---|---|
onNetworkChangedListener | нулевой | Слушатель для изменений состояния сети. |
onAirplaneModeSwitchListener | нулевой | Слушатель для изменений режима самолета. |
| Метод | Возврат | Использовать |
|---|---|---|
isOnline() | Логический | Подтверждает, есть ли подключение к Интернету. |
isWifiAvailable() | Логический | Утверждает, что подключение к Интернету доступно через Wi -Fi. |
isCellularAvailable() | Логический | Утверждает, что подключение к Интернету доступно через мобильные данные. |
isAirplaneModeActive() | Логический | Утверждается, что режим самолета активен. |
unregisterAirplaneModeSwitchListener() | Единица | Нерегистрирует onAirplaneModeSwitchListener от прослушивания событий в режиме самолета. |
registerAirplaneModeSwitchListener() | Единица | Зарегистрирует onAirplaneModeSwitchListener , чтобы начать прослушивание событий режима самолета. |
setOnNetworkStateChangedListener(execute: OnNetworkChangedListener.(Boolean, Network) -> Unit) | Единица | Устанавливает прослушивание смены сети. |
setOnAirplaneModeSwitchListener(execute: OnAirplaneModeSwitchListener.(Boolean) -> Unit) | Единица | Устанавливает прослушитель переключателя режима самолета. |
Участники приветствуются!
Примечание: этот репозиторий разделен на две ветви:
Все развивающиеся реализации и предлагаемые изменения направляются в филиал разработки, а доработка обновления выдвигаются в основную ветвь.
Чтобы отметить, что ведутся текущие разработки, в филиале разработки будет больше комедитов, чем в основной ветви.
Проверьте вклад для получения дополнительной информации.
Больше истории версий можно получить из файла журнала изменений.
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.