/** Ċ Ġ* ĠCheck Ġdevice 's Ġnetwork Ġconnectivity Ġand Ġspeed Ċ Ġ* Ġ@ author Ġem il Ġhttp :// stackoverflow . com / users / 2 2 0 7 1 0 / em il Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . why wh om . soft . why radio box . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net .* Ċ import Ġandroid . os . Build Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġandroid . util . Log Ċ import Ġandroidx . annotation . Requires Api ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġw uh ao y ong Ġon Ġ 3 0 / 0 8 / 2 0 . Ċ Ġ*/ Ċ object ĠConnect ivity Ġ{ ĊĠĠĠ Ġconst Ġval ĠTYPE _ MOB ILE Ġ= Ġ 0 ĊĠĠĠ Ġconst Ġval ĠTYPE _ WIFI Ġ= Ġ 1 ĊĠĠĠ Ġconst Ġval ĠTYPE _ OTHER Ġ= Ġ 2 ĊĠĠĠ Ġconst Ġval ĠTYPE _ NONE Ġ= Ġ 3 ĊĠĠĠ Ġvar Ġcurrent Connect Type Ġ= ĠTYPE _ MOB ILE ĊĠĠĠ Ġval ĠTAG : ĠString Ġ= ĠConnect ivity :: class . java . name . toString () ĊĠĠĠ Ġ// ĠGlobal Ġvariable Ġused Ġto Ġstore Ġnetwork Ġstate ĊĠĠĠ Ġvar Ġis Network Connected Ġ= Ġfalse ĊĠĠĠ Ġ/* ĊĠĠĠ ĠYou Ġneed Ġto Ġcall Ġthe Ġbelow Ġmethod Ġonce . ĠIt Ġregister Ġthe Ġcallback Ġand Ġfire Ġit Ġwhen Ġthere Ġis Ġa Ġchange Ġin Ġnetwork Ġstate . ĊĠĠĠ ĠHere ĠI Ġused Ġa ĠGlobal ĠStatic ĠVariable , ĠSo ĠI Ġcan Ġuse Ġit Ġto Ġaccess Ġthe Ġnetwork Ġstate Ġin Ġany ware Ġof Ġthe Ġapplication . ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun ĠgetCurrent Connect Type ( context : ĠContext ?): ĠInt { ĊĠĠĠĠĠĠĠ Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġandroid . os . Build . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcurrent Connect Type ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( isConnected Wifi ( context )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTYPE _ WIFI ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( isConnected Mobile ( context )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTYPE _ MOB ILE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( isConnected ( context )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTYPE _ OTHER ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠTYPE _ NONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠNetwork ĠCheck ĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġfun Ġregister Network Callback ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnectivity Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNetwork Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnectivity Manager . register Default Network Callback ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnect ivity Manager . Network Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Available ( network : ĠNetwork ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Network Connected Ġ= Ġtrue Ġ// ĠGlobal ĠStatic ĠVariable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Lost ( network : ĠNetwork ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Network Connected Ġ= Ġfalse Ġ// ĠGlobal ĠStatic ĠVariable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Capabilities Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠNetwork , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Capabilities : ĠNetwork Capabilities ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Capabilities Changed ( network , Ġnetwork Capabilities ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Capabilities . has Capability ( Network Capabilities . NET _ CAP ABILITY _ VALID ATED )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Capabilities . has Transport ( Network Capabilities . TRANSPORT _ WIFI )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Capabilities Changed : Ġ ç½ĳç»ľ ç±»åŀĭ ä¸º wifi ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Connect Type Ġ= ĠTYPE _ WIFI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( network Capabilities . has Transport ( Network Capabilities . TRANSPORT _ CELL ULAR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Capabilities Changed : Ġ è ľ Ĥ çª Ŀ ç½ĳç»ľ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Connect Type Ġ= ĠTYPE _ MOB ILE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Capabilities Changed : Ġ åħ¶ä»ĸ ç½ĳç»ľ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Connect Type Ġ= ĠTYPE _ OTHER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Network Connected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Network Connected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġmethods Ġbelow Ġis Ġdeprecated ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġnetwork Ġinfo ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Network Info ( context : ĠContext ): ĠNetwork Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcm Ġ= Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠ Ġreturn Ġcm . active Network Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġif Ġthere Ġis Ġany Ġconnectivity ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Connected ( context : ĠContext ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo : ĠNetwork Info ? Ġ= Ġcontext ?. let Ġ{ ĠConnect ivity . get Network Info ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinfo Ġ!= Ġnull Ġ&& Ġinfo . isConnected ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġif Ġthere Ġis Ġany Ġconnectivity Ġto Ġa ĠW ifi Ġnetwork ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Connected Wifi ( context : ĠContext ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo : ĠNetwork Info ? Ġ= Ġcontext ?. let Ġ{ ĠConnect ivity . get Network Info ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinfo Ġ!= Ġnull Ġ&& Ġinfo . isConnected Ġ&& Ġinfo . type Ġ== ĠConnect ivity Manager . TYPE _ WIFI ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġif Ġthere Ġis Ġany Ġconnectivity Ġto Ġa Ġmobile Ġnetwork ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Connected Mobile ( context : ĠContext ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo : ĠNetwork Info ? Ġ= Ġcontext ?. let Ġ{ ĠConnect ivity . get Network Info ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinfo Ġ!= Ġnull Ġ&& Ġinfo . isConnected Ġ&& Ġinfo . type Ġ== ĠConnect ivity Manager . TYPE _ MOB ILE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġif Ġthere Ġis Ġfast Ġconnectivity ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Connected Fast ( context : ĠContext ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo : ĠNetwork Info ? Ġ= Ġcontext ?. let Ġ{ ĠConnect ivity . get Network Info ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinfo Ġ!= Ġnull Ġ&& Ġinfo . isConnected Ġ&& ĠConnect ivity . is Connection Fast ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . subtype ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġif Ġthe Ġconnection Ġis Ġfast ĊĠĠĠĠ Ġ* Ġ@ param Ġtype ĊĠĠĠĠ Ġ* Ġ@ param Ġsub Type ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Connection Fast ( type : ĠInt , Ġsub Type : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( type Ġ== ĠConnect ivity Manager . TYPE _ WIFI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠConnect ivity Manager . TYPE _ MOB ILE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( sub Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ 1 x RT T Ġ-> Ġfalse Ġ// Ġ~ Ġ 5 0 - 1 0 0 Ġkb ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ CD MA Ġ-> Ġfalse Ġ// Ġ~ Ġ 1 4 - 6 4 Ġkb ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EDGE Ġ-> Ġfalse Ġ// Ġ~ Ġ 5 0 - 1 0 0 Ġkb ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EV DO _ 0 Ġ-> Ġtrue Ġ// Ġ~ Ġ 4 0 0 - 1 0 0 0 Ġkb ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EV DO _ A Ġ-> Ġtrue Ġ// Ġ~ Ġ 6 0 0 - 1 4 0 0 Ġkb ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ G PR S Ġ-> Ġfalse Ġ// Ġ~ Ġ 1 0 0 Ġkb ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SD PA Ġ-> Ġtrue Ġ// Ġ~ Ġ 2 - 1 4 ĠM bps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SPA Ġ-> Ġtrue Ġ// Ġ~ Ġ 7 0 0 - 1 7 0 0 Ġkb ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SUP A Ġ-> Ġtrue Ġ// Ġ~ Ġ 1 - 2 3 ĠM bps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ UM TS Ġ-> Ġtrue Ġ// Ġ~ Ġ 4 0 0 - 7 0 0 0 Ġkb ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ E HR PD Ġ-> Ġtrue Ġ// Ġ~ Ġ 1 - 2 ĠM bps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EV DO _ B Ġ-> Ġtrue Ġ// Ġ~ Ġ 5 ĠM bps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SP AP Ġ-> Ġtrue Ġ// Ġ~ Ġ 1 0 - 2 0 ĠM bps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ ID EN Ġ-> Ġfalse Ġ// Ġ~ 2 5 Ġkb ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ LTE Ġ-> Ġtrue Ġ// Ġ~ Ġ 1 0 + ĠM bps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ UNKNOWN Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }