package Ġcom . m 2 mm usic . android . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net .* Ċ import Ġandroid . os . Build Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcom . m 2 mm usic . android . application . M 2 MM usic Application Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Network Info " Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġå°ı å°ı èĭı Ġat Ġ 2 0 2 1 / 3 / 2 2 Ċ Ġ* Ġ ç½ĳç»ľ å·¥åħ· éĽĨåĲĪ Ċ Ġ* ĠåĪ¤æĸŃ ç½ĳç»ľ è¿ŀæİ¥ çĬ¶æĢģ Ċ Ġ* ĠåĪ¤æĸŃ å½ĵåīį ç½ĳç»ľ ç±»åŀĭ Ċ Ġ*/ Ċ object ĠNetwork Util Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġfun Ġis Internet Available ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcm Ġ= Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ? ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcm ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcm . get Network Capabilities ( cm . active Network )?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Transport ( Network Capabilities . TRANSPORT _ WIFI ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Transport ( Network Capabilities . TRANSPORT _ CELL ULAR ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Transport ( Network Capabilities . TRANSPORT _ ETHER NET ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcm ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcm . active Network Info ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠConnect ivity Manager . TYPE _ WIFI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠConnect ivity Manager . TYPE _ MOB ILE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ object ĠNetwork State Ġ{ ĊĊĠĠĠ Ġ// Ġ æĹł ç½ĳç»ľ ĊĠĠĠ Ġconst Ġval ĠUN CONNECTED Ġ= Ġ 0 ĊĊĠĠĠ Ġ// Ġ ç½ĳç»ľ è¿ŀæİ¥ ĊĠĠĠ Ġconst Ġval ĠCONNECT ED Ġ= Ġ 1 ĊĊĠĠĠ Ġ// ĠW IFI ĊĠĠĠ Ġconst Ġval ĠW IFI Ġ= Ġ 2 ĊĊĠĠĠ Ġ// Ġ ç§»åĬ¨ ç½ĳç»ľ ĊĠĠĠ Ġconst Ġval ĠCELL ULAR Ġ= Ġ 3 Ċ Ċ } Ċ Ċ class ĠNetwork LiveData Ġ: ĠLive Data < Int >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġnetwork Callback : ĠConnect ivity Manager . Network Callback ĊĠĠĠ Ġprivate Ġvar Ġrequest : ĠNetwork Request ĊĠĠĠ Ġprivate Ġvar Ġmanager : ĠConnect ivity Manager ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġnetwork Callback Ġ= ĠNetwork Callback Impl () ĊĠĠĠĠĠĠĠ Ġrequest Ġ= ĠNetwork Request . Builder (). build () ĊĠĠĠĠĠĠĠ Ġmanager Ġ= ĠM 2 MM usic Application . context . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Active () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Active () ĊĠĠĠĠĠĠĠ Ġmanager . register Network Callback ( request , Ġnetwork Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Inactive () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Inactive () ĊĠĠĠĠĠĠĠ Ġmanager . unregister Network Callback ( network Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠNetwork Callback Impl Ġ: ĠConnect ivity Manager . Network Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Available ( network : ĠNetwork ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Available ( network ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . d ( TAG , Ġ" ç½ĳç»ľ å·² è¿ŀæİ¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetInstance (). post Value ( Network State . CONNECTED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Lost ( network : ĠNetwork ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Lost ( network ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . d ( TAG , Ġ" ç½ĳç»ľ å·² æĸŃ å¼Ģ ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetInstance (). post Value ( Network State . UN CONNECTED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Capabilities Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠNetwork , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Capabilities : ĠNetwork Capabilities ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Capabilities Changed ( network , Ġnetwork Capabilities ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Capabilities . has Transport ( Network Capabilities . TRANSPORT _ WIFI )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . d ( TAG , Ġ" WiFi å·² è¿ŀæİ¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetInstance (). post Value ( Network State . WIFI ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( network Capabilities . has Transport ( Network Capabilities . TRANSPORT _ CELL ULAR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . d ( TAG , Ġ" ç§»åĬ¨ ç½ĳç»ľ å·² è¿ŀæİ¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetInstance (). post Value ( Network State . CELL ULAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠNetwork LiveData Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠINSTANCE Ġ= ĠNetwork LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠNetwork LiveData Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNetwork LiveData Holder . INSTANCE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ