Um módulo leve escrito em Kotlin para monitorar o estado de estado e o modo de avião no Android nativo.
O NetworkValidator fornece disponibilidade de rede em tempo real e monitoramento do modo de avião.



VERSÃO ATRUNTE: 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 >Se for uma versão instantânea, adicione o repositório OSS de instantâneo Maven Nexus OSS:
maven {
url ' https://s01.oss.sonatype.org/content/repositories/snapshots/ '
}Em seguida, recupere uma cópia:
implementation ' io.github.iodevblue:parallaxnavigationdrawer:current-version 'libs no seu módulo de projeto e instale em seu projeto. implementation fileTree( dir : ' libs ' , include : ' *jar ' )Nota: Versão mínima de Android SDK Android = 23
Crie uma instância NetworkValidator usando um Context :
val networkValidator = NetworkValidator (context)Validar se houver conexão com a Internet em um dispositivo:
val isOnline = networkValidator.isOnline()
if (isOnline) {
retrieveFromRemoteRepo()
} else {
retrieveFromLocalCache()
}Validar se houver conexão com a Internet através do WiFi:
val isWifiAvail = networkValidator.isWifiAvailable()
if (isWifiAvail) {
startPackageDownloading()
} else {
informUser()
}Validar se houver conexão com a Internet através de dados móveis:
val isMobileDataOn = networkValidator.isCellularAvailable()
if (isMobileDataOn) {
connectToServer()
} else {
disconnectFromServer()
}
Validar se o modo de avião estiver ligado:
val isOnAirplane = networkValidator.isAirplaneModeActive()
if (isOnAirplane) {
disconnectFromServer()
} else {
doSomethingRemotely()
}
Para ouvir alterações na disponibilidade da Internet no dispositivo (Wi -Fi e Mobile Data), defina uma instância OnNetworkChangedListener :
val networkValidator = NetworkValidator (context)
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
if (isOnline) {
contactRemoteServer()
}
}
} Ou aplique um OnNetworkChangedListener usando uma sintaxe da função do receptor Kotlin:
networkValidator.setOnNetworkStateChangedListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} Nota: O retorno de chamada onNetworkChanged() e o setOnNetworkStateChangedListener {...} Função do receptor Executa em um Thread em segundo plano. Isso significa que as funções da interface do usuário que respondem às alterações da rede devem ser executadas em um Thread da interface do usuário, como em uma Activity do Android:
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
runOnUiThread {
if (isOnline) {
contactRemoteServer()
}
}
}
} Para ouvir as alterações no modo de avião, defina uma instância OnAirplaneModeSwitchListener :
networkValidator.onAirplaneModeSwitchListener = object : NetworkValidator . OnAirplaneModeSwitchListener {
override fun onChanged ( turnedOn : Boolean ) {
if (turnedOn) {
pauseRemoteConnection()
}
}
} Ou aplique um OnAirplaneModeSwitchListener usando uma sintaxe da função de receptor Kotlin:
networkValidator.setOnAirplaneModeSwitchListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} Além disso, o retorno de chamada de onChanged() e o setOnAirplaneModeSwitchListener {...} Função de receptor Executa em um Thread de segundo plano, portanto, as funções de interface do usuário que respondem às alterações no modo de avião devem ser executadas em um Thread UI da mesma maneira que o OnNetworkChangedListener .
Nota: NetworkValidator usa um BroadcastReceiver interno que lida com os eventos de alteração do modo de avião de recebimento e é registrado automaticamente quando uma instância OnAirplaneModeSwitchListener é definida. Não é registrado e anulado quando o OnAirplaneModeSwitchListener é anulado.
(consulte o código da biblioteca para obter mais detalhes)
No entanto, este BroadcastReceiver interno precisa ser registrado quando um NetworkValidator não está em uso para evitar vazamentos de memória.
Em uma Activity do Android, pode ser feito assim:
override fun onResume () {
super .onResume()
networkValidator.registerAirplaneModeSwitchListener
}
override fun onPause () {
super .onPause()
networkValidator.unregisterAirplaneModeSwitchListener
} As funções do receptor de extensão de Kotlin (extensões em um Context ) também estão incluídas para ajudar na configuração rápida:
networkValidator{} Retorna uma instância de NetworkValidator válida:
networkValidator {
setOnNetworkStateChangedListener { b, _ ->
runOnUiThread {
tv.text = resources.getString( R .string.detect_network)
showProgress()
updateNetworkState(b)
}
}
} listenForNetwork{} cria internamente um NetworkValidator e registra um OnNetworkChangedListener que começa a ouvir imediatamente:
listenForNetwork { b, network ->
if (b) {
updateNetworkState(b)
reInitializeRemoteConnection()
} else {
invalidateRemoteConnection()
informUser()
}
} listenForAirplaneModeChanges{} Retorna um NetworkValidator e registra um OnAirplaneModeSwitchListener que começa a ouvir imediatamente:
val networkValidator = listenForAirplaneModeChanges {
if (it) {
cancelRemoteConnection()
} else {
reInitializeRemoteConnection()
}
} A instância NetworkValidator retornada pode ser usada para register() e unregister() o BroadcastReceiver interno.
Este módulo é completamente interoperável com Java.
Nota: As funções de extensão não são aplicáveis no Java.
Crie uma instância NetworkValidator :
NetworkValidator networkValidator = new NetworkValidator ( this );Validar se houver conexão com a Internet em um dispositivo:
boolean isOnline = networkValidator . isOnline ();
if ( isOnline ) {
retrieveFromRemoteRepo ();
} else {
retrieveFromLocalCache ();
}Validar se houver conexão com a Internet através do WiFi:
boolean isWifiAvail = networkValidator . isWifiAvailable ();
if ( isWifiAvail ) {
startPackageDownloading ();
} else {
informUser ();
}Validar se houver conexão com a Internet através de dados móveis:
boolean isMobileDataOn = networkValidator . isCellularAvailable ();
if ( isMobileDataOn ) {
connectToServer ();
} else {
disconnectFromServer ();
}Validar se o modo de avião estiver ligado:
boolean isOnAirplane = networkValidator . isAirplaneModeActive ();
if ( isOnAirplane ) {
disconnectFromServer ();
} else {
doSomethingRemotely ();
} Para ouvir alterações na disponibilidade da Internet no dispositivo (Wi -Fi e Mobile Data), defina uma instância OnNetworkChangedListener :
NetworkValidator networkValidator = new NetworkValidator ( this );
networkValidator . setOnNetworkChangedListener (( isOnline , network ) -> {
if ( isOnline ) {
contactRemoteServer ();
}
} Para ouvir as alterações no modo de avião, defina uma instância OnAirplaneModeSwitchListener :
networkValidator . setOnAirplaneModeSwitchListener ( turnedOn -> {
if ( turnedOn ) {
pauseRemoteConnection ();
}
}Configurações:
| Variável | Padrão | Usar |
|---|---|---|
onNetworkChangedListener | nulo | Ouvinte para alterações no estado da rede. |
onAirplaneModeSwitchListener | nulo | O ouvinte para alterações no modo de avião. |
| Método | Retorna | Usar |
|---|---|---|
isOnline() | Booleano | Valida se houver conexão com a Internet. |
isWifiAvailable() | Booleano | Valida se a conexão com a Internet estiver disponível através do WiFi. |
isCellularAvailable() | Booleano | Valida se a conexão com a Internet estiver disponível através de dados móveis. |
isAirplaneModeActive() | Booleano | Validados é o modo de avião está ativo. |
unregisterAirplaneModeSwitchListener() | Unidade | Não registra o onAirplaneModeSwitchListener de ouvir os eventos do modo de avião. |
registerAirplaneModeSwitchListener() | Unidade | Registra o onAirplaneModeSwitchListener para começar a ouvir os eventos do modo de avião. |
setOnNetworkStateChangedListener(execute: OnNetworkChangedListener.(Boolean, Network) -> Unit) | Unidade | Define um ouvinte de mudança de rede. |
setOnAirplaneModeSwitchListener(execute: OnAirplaneModeSwitchListener.(Boolean) -> Unit) | Unidade | Define um ouvinte de interruptor de modo de avião. |
Os colaboradores são bem -vindos!
Nota: Este repositório é dividido em dois ramos:
Todas as implementações em desenvolvimento e alterações propostas são empurradas para a filial de desenvolvimento e as atualizações finalizadas são empurradas para a filial principal.
Para observar se os desenvolvimentos atuais estiverem sendo feitos, haveria mais compromissos no ramo de desenvolvimento do que no ramo principal.
Verifique a contribuição para obter mais informações.
Mais histórico de versões pode ser obtido no arquivo de log de alterações.
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.