Modul ringan yang ditulis di Kotlin untuk memantau status jaringan dan mode pesawat pada Android asli.
NetworkValidator menyediakan ketersediaan jaringan waktu nyata dan pemantauan mode pesawat.



Versi Saat Ini: 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 >Jika itu adalah versi snapshot, tambahkan repositori snapshot maven nexus oss:
maven {
url ' https://s01.oss.sonatype.org/content/repositories/snapshots/ '
}Kemudian ambil salinan:
implementation ' io.github.iodevblue:parallaxnavigationdrawer:current-version 'libs di modul proyek Anda dan instal di proyek Anda. implementation fileTree( dir : ' libs ' , include : ' *jar ' )Catatan: Versi SDK Android Minimum yang Didukung = 23
Buat instance NetworkValidator Menggunakan Context :
val networkValidator = NetworkValidator (context)Validasi Jika ada koneksi internet pada perangkat:
val isOnline = networkValidator.isOnline()
if (isOnline) {
retrieveFromRemoteRepo()
} else {
retrieveFromLocalCache()
}Validasi jika ada koneksi internet melalui wifi:
val isWifiAvail = networkValidator.isWifiAvailable()
if (isWifiAvail) {
startPackageDownloading()
} else {
informUser()
}Validasi Jika ada koneksi internet melalui data seluler:
val isMobileDataOn = networkValidator.isCellularAvailable()
if (isMobileDataOn) {
connectToServer()
} else {
disconnectFromServer()
}
Validasi jika mode pesawat dinyalakan:
val isOnAirplane = networkValidator.isAirplaneModeActive()
if (isOnAirplane) {
disconnectFromServer()
} else {
doSomethingRemotely()
}
Untuk mendengarkan perubahan ketersediaan internet pada perangkat (baik wifi dan data seluler), atur instance OnNetworkChangedListener :
val networkValidator = NetworkValidator (context)
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
if (isOnline) {
contactRemoteServer()
}
}
} Atau terapkan OnNetworkChangedListener menggunakan sintaks fungsi penerima Kotlin:
networkValidator.setOnNetworkStateChangedListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} CATATAN: Callback onNetworkChanged() dan setOnNetworkStateChangedListener {...} fungsi penerima yang semua dijalankan di Thread latar belakang. Itu berarti, fungsi antarmuka pengguna yang menanggapi perubahan jaringan harus dieksekusi pada Thread UI seperti itu pada Activity Android:
networkValidator.onNetworkChangedListener = object : NetworkValidator . OnNetworkChangedListener {
override fun onNetworkChanged ( isOnline : Boolean , network : Network ) {
runOnUiThread {
if (isOnline) {
contactRemoteServer()
}
}
}
} Untuk mendengarkan perubahan mode pesawat, atur instance OnAirplaneModeSwitchListener :
networkValidator.onAirplaneModeSwitchListener = object : NetworkValidator . OnAirplaneModeSwitchListener {
override fun onChanged ( turnedOn : Boolean ) {
if (turnedOn) {
pauseRemoteConnection()
}
}
} Atau terapkan OnAirplaneModeSwitchListener menggunakan sintaks fungsi penerima Kotlin:
networkValidator.setOnAirplaneModeSwitchListener { isOnline, _ ->
if (isOnline) {
contactRemoteServer()
}
} Juga, callback onChanged() dan setOnAirplaneModeSwitchListener {...} fungsi penerima yang semua dijalankan dalam Thread latar belakang oleh karena itu, fungsi antarmuka pengguna yang merespons perubahan mode pesawat harus dieksekusi pada Thread UI dengan cara yang sama seperti OnNetworkChangedListener .
CATATAN: NetworkValidator menggunakan BroadcastReceiver internal yang menangani peristiwa perubahan mode pesawat penerima dan secara otomatis terdaftar ketika instance OnAirplaneModeSwitchListener didefinisikan. Itu tidak terdaftar dan dibatalkan ketika OnAirplaneModeSwitchListener dibatalkan.
(Lihat Kode Perpustakaan untuk detail lebih lanjut)
Namun BroadcastReceiver internal ini perlu tidak terdaftar ketika NetworkValidator tidak digunakan untuk menghindari kebocoran memori.
Dalam Activity android, itu bisa dilakukan seperti itu:
override fun onResume () {
super .onResume()
networkValidator.registerAirplaneModeSwitchListener
}
override fun onPause () {
super .onPause()
networkValidator.unregisterAirplaneModeSwitchListener
} Fungsi Penerima Ekstensi Kotlin (Ekstensi pada Context ) juga dimasukkan untuk membantu dalam pengaturan cepat:
networkValidator{} Mengembalikan instance NetworkValidator yang valid:
networkValidator {
setOnNetworkStateChangedListener { b, _ ->
runOnUiThread {
tv.text = resources.getString( R .string.detect_network)
showProgress()
updateNetworkState(b)
}
}
} listenForNetwork{} secara internal membuat networkValidator dan mendaftarkan OnNetworkChangedListener yang mulai segera mendengarkan:
listenForNetwork { b, network ->
if (b) {
updateNetworkState(b)
reInitializeRemoteConnection()
} else {
invalidateRemoteConnection()
informUser()
}
} listenForAirplaneModeChanges{} mengembalikan NetworkValidator dan mendaftarkan OnAirplaneModeSwitchListener yang mulai mendengarkan segera:
val networkValidator = listenForAirplaneModeChanges {
if (it) {
cancelRemoteConnection()
} else {
reInitializeRemoteConnection()
}
} Instance NetworkValidator yang dikembalikan kemudian dapat digunakan untuk register() dan unregister() BroadcastReceiver internal.
Modul ini sepenuhnya dapat dioperasikan dengan Java.
Catatan: Fungsi ekstensi tidak berlaku di Java.
Buat instance NetworkValidator :
NetworkValidator networkValidator = new NetworkValidator ( this );Validasi Jika ada koneksi internet pada perangkat:
boolean isOnline = networkValidator . isOnline ();
if ( isOnline ) {
retrieveFromRemoteRepo ();
} else {
retrieveFromLocalCache ();
}Validasi jika ada koneksi internet melalui wifi:
boolean isWifiAvail = networkValidator . isWifiAvailable ();
if ( isWifiAvail ) {
startPackageDownloading ();
} else {
informUser ();
}Validasi Jika ada koneksi internet melalui data seluler:
boolean isMobileDataOn = networkValidator . isCellularAvailable ();
if ( isMobileDataOn ) {
connectToServer ();
} else {
disconnectFromServer ();
}Validasi jika mode pesawat dinyalakan:
boolean isOnAirplane = networkValidator . isAirplaneModeActive ();
if ( isOnAirplane ) {
disconnectFromServer ();
} else {
doSomethingRemotely ();
} Untuk mendengarkan perubahan ketersediaan internet pada perangkat (baik wifi dan data seluler), atur instance OnNetworkChangedListener :
NetworkValidator networkValidator = new NetworkValidator ( this );
networkValidator . setOnNetworkChangedListener (( isOnline , network ) -> {
if ( isOnline ) {
contactRemoteServer ();
}
} Untuk mendengarkan perubahan mode pesawat, atur instance OnAirplaneModeSwitchListener :
networkValidator . setOnAirplaneModeSwitchListener ( turnedOn -> {
if ( turnedOn ) {
pauseRemoteConnection ();
}
}Konfigurasi:
| Variabel | Bawaan | Menggunakan |
|---|---|---|
onNetworkChangedListener | batal | Pendengar untuk perubahan keadaan jaringan. |
onAirplaneModeSwitchListener | batal | Pendengar untuk perubahan mode pesawat. |
| Metode | Kembali | Menggunakan |
|---|---|---|
isOnline() | Boolean | Memvalidasi jika ada koneksi internet. |
isWifiAvailable() | Boolean | Memvalidasi jika koneksi internet tersedia melalui wifi. |
isCellularAvailable() | Boolean | Memvalidasi jika koneksi internet tersedia melalui data seluler. |
isAirplaneModeActive() | Boolean | Validasi adalah mode pesawat aktif. |
unregisterAirplaneModeSwitchListener() | Satuan | Tidak mendaftar onAirplaneModeSwitchListener dari mendengarkan peristiwa mode pesawat. |
registerAirplaneModeSwitchListener() | Satuan | Mendaftarkan onAirplaneModeSwitchListener untuk mulai mendengarkan acara mode pesawat. |
setOnNetworkStateChangedListener(execute: OnNetworkChangedListener.(Boolean, Network) -> Unit) | Satuan | Menetapkan pendengar perubahan jaringan. |
setOnAirplaneModeSwitchListener(execute: OnAirplaneModeSwitchListener.(Boolean) -> Unit) | Satuan | Mengatur pendengar sakelar mode pesawat. |
Kontributor dipersilakan!
Catatan: Repositori ini dibagi menjadi dua cabang:
Semua implementasi yang berkembang dan perubahan yang diusulkan didorong ke cabang pengembangan dan pembaruan yang diselesaikan didorong ke cabang utama.
Untuk mencatat jika perkembangan saat ini sedang dilakukan, akan ada lebih banyak komit di cabang pengembangan daripada di cabang utama.
Periksa kontribusi untuk informasi lebih lanjut.
Lebih banyak riwayat versi dapat diperoleh dari file log perubahan.
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.