وحدة خفيفة الوزن مكتوبة في Kotlin لمراقبة حالة الشبكة ووضع الطائرة على Android الأصلي.
يوفر NetworkValidator توافر الشبكة في الوقت الفعلي ومراقبة وضع الطائرة.



Version-Version: 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 >إذا كان إصدار لقطة ، أضف مستودع Snapshot 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()
}التحقق من صحة ما إذا كان هناك اتصال بالإنترنت من خلال wifi:
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()
}
للاستماع إلى التغييرات في توفر الإنترنت على الجهاز (كل من WiFi وبيانات الهاتف المحمول) ، قم بتعيين مثيل 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 واجهة المستخدم مثل ذلك على Activity Android:
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{} بإنشاء شبكة NetworkValidator داخليًا ويسجل OnNetworkChangedListener يبدأ الاستماع على الفور:
listenForNetwork { b, network ->
if (b) {
updateNetworkState(b)
reInitializeRemoteConnection()
} else {
invalidateRemoteConnection()
informUser()
}
} listenForAirplaneModeChanges{} إرجاع NetworkValidator ويسجل 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 ();
}التحقق من صحة ما إذا كان هناك اتصال بالإنترنت من خلال wifi:
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 ();
} للاستماع إلى التغييرات في توفر الإنترنت على الجهاز (كل من WiFi وبيانات الهاتف المحمول) ، قم بتعيين مثيل OnNetworkChangedListener :
NetworkValidator networkValidator = new NetworkValidator ( this );
networkValidator . setOnNetworkChangedListener (( isOnline , network ) -> {
if ( isOnline ) {
contactRemoteServer ();
}
} للاستماع إلى تغييرات وضع الطائرة ، قم بتعيين مثيل OnAirplaneModeSwitchListener :
networkValidator . setOnAirplaneModeSwitchListener ( turnedOn -> {
if ( turnedOn ) {
pauseRemoteConnection ();
}
}التكوينات:
| عامل | تقصير | يستخدم |
|---|---|---|
onNetworkChangedListener | باطل | مستمع لتغييرات حالة الشبكة. |
onAirplaneModeSwitchListener | باطل | مستمع لتغيير وضع الطائرة. |
| طريقة | عودة | يستخدم |
|---|---|---|
isOnline() | منطقية | يتحقق إذا كان هناك اتصال إنترنت. |
isWifiAvailable() | منطقية | يتحقق إذا كان اتصال الإنترنت متاحًا من خلال WiFi. |
isCellularAvailable() | منطقية | يتحقق إذا كان اتصال الإنترنت متاحًا من خلال بيانات الهاتف المحمول. |
isAirplaneModeActive() | منطقية | التحقق من صحة وضع الطائرة نشط. |
unregisterAirplaneModeSwitchListener() | وحدة | unregisters The 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.