package Ġcom . sil we k . tools . network Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Connectivity Manager . Network Callback Ċ import Ġandroid . net . Network Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġjava . util .* Ċ Ċ @ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . N ) Ċ class ĠNetwork Connection Monitor V 2 4 ( private Ġvar Ġcontext : ĠContext ) Ġ: ĠNetwork Connection Monitor () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcallback : ĠAdvanced Network Callback ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun Ġunregister Default Network Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnectivity Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġcallback ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnectivity Manager . unregister Network Callback ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Default Network Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Current Status ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnectivity Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= Ġobject Ġ: ĠAdvanced Network Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Network Change ( is Network Connected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( is Network Connected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnectivity Manager . register Default Network Callback ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . callback Ġ= Ġcallback ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġclass ĠAdvanced Network Callback Ġ: ĠNetwork Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġactive Networks : ĠMutable List < Network > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Available ( network : ĠNetwork ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Available ( network ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Networks . none Ġ{ Ġit . network Handle Ġ== Ġnetwork . network Handle Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Networks . add ( network ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Network Change ( active Networks . isNotEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Lost ( network : ĠNetwork ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Lost ( network ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Networks . removeAll Ġ{ Ġit . network Handle Ġ== Ġnetwork . network Handle Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Network Change ( active Networks . isNotEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġon Network Change ( is Network Connected : ĠBoolean ) ĊĠĠĠ Ġ} Ċ }