โมดูลที่มีน้ำหนักเบาเขียนใน Kotlin เพื่อตรวจสอบสถานะเครือข่ายและโหมดเครื่องบินบน 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 repository:
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 UI เช่นเดียวกับ 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 UI ในลักษณะเดียวกับ 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{} ส่งคืนเครือข่าย Validator และลงทะเบียน 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 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.