package Ġat . r tr . r mb t . android . ui Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . widget . AppCompat Image Button Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġat . r mb t . client . control . Ip Protocol Ċ import Ġat . r tr . r mb t . android . R Ċ import Ġat . r tr . r mb t . android . ui . view . ProgressBar Ċ import Ġat . r tr . r mb t . android . ui . view . Result Bar Ċ import Ġat . r tr . r mb t . android . ui . view . Speed Line Chart Ċ import Ġat . r tr . r mb t . android . ui . view . Wave View Ċ import Ġat . r tr . r mb t . android . ui . view . curve . Measurement Curve Layout Ċ import Ġat . r tr . r mb t . android . util . Info Window Status Ċ import Ġat . r tr . r mb t . android . util . format Ċ import Ġat . spec ure . data . Classification Ċ import Ġat . spec ure . data . Network Type Compat Ċ import Ġat . spec ure . data . Server Network Type Ċ import Ġat . spec ure . data . entity . Graph Item Record Ċ import Ġat . spec ure . info . Transport Type Ċ import Ġat . spec ure . info . cell . Cell Network Info Ċ import Ġat . spec ure . info . cell . Cell Tech nology Ċ import Ġat . spec ure . info . ip . Ip Info Ċ import Ġat . spec ure . info . ip . Ip Status Ċ import Ġat . spec ure . info . network . Network Info Ċ import Ġat . spec ure . info . network . Detailed Network Info Ċ import Ġat . spec ure . info . network . Ethernet Network Info Ċ import Ġat . spec ure . info . network . Mobile Network Type Ċ import Ġat . spec ure . info . network . Wifi Network Info Ċ import Ġat . spec ure . info . strength . Signal Strength Info Ċ import Ġat . spec ure . measurement . Measurement State Ċ import Ġat . spec ure . result . Qo E Category Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util . TimeZone Ċ import Ġjava . util . Calendar Ċ import Ġjava . util . Locale Ċ import Ġjava . util . Date Ċ import Ġkotlin . math . round ToInt Ċ import Ġkotlin . math . round To Long Ċ Ċ @ Binding Adapter (" int Text ") Ċ fun Ġint Text ( textView : ĠTextView , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠ ĠtextView . text Ġ= Ġvalue . toString () Ċ } Ċ Ċ /** Ċ Ġ* ĠA ĠBinding Ġadapter Ġthat Ġis Ġused Ġfor Ġchange Ġvisibility Ġof Ġview Ċ Ġ*/ Ċ @ Binding Adapter (" visible Or G one ") Ċ fun ĠView . setVisible Or G one ( show : ĠBoolean ) Ġ{ ĊĠĠĠ Ġvisibility Ġ= Ġif Ġ( show ) ĠView . VISIBLE Ġelse ĠView . GONE Ċ } Ċ Ċ private Ġfun ĠAppCompat TextView . prepare Signal Label ( ĊĠĠĠ Ġmain Text : ĠString , ĊĠĠĠ Ġnetwork Type : ĠNetwork Info ?, ĊĠĠĠ Ġnetwork Type Secondary : ĠNetwork Info ?, ĊĠĠĠ Ġsignal : ĠInt ?, ĊĠĠĠ Ġsignal Secondary : ĠInt ? Ċ ): ĠStringBuilder Ġ{ ĊĠĠĠ Ġval Ġmain Type Ġ= Ġwhen Ġ( network Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠCell Network Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Type . cell Type Ġ== ĠCell Tech nology . CONNECTION _ UNKNOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type . cell Type . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġsecondary Type Ġ= Ġwhen Ġ( network Type Secondary ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠCell Network Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Type Secondary . cell Type Ġ== ĠCell Tech nology . CONNECTION _ UNKNOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type Secondary . cell Type . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġsignal Values Ġ= Ġextract Signal Values ( this . context , Ġsignal , Ġsignal Secondary , Ġnetwork Type ) ĊĊĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠ Ġif Ġ( main Text . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . append ( main Text ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( network Type Ġis ĠCell Network Info Ġ&& Ġnetwork Type . network Type Ġ== ĠMobile Network Type . NR _ NS A ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( main Type . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" Ġ$ main Type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( secondary Type . isNotEmpty () Ġ&& Ġsignal Values . contains ("/ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("/ $ secondary Type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbuilder Ċ } Ċ Ċ enum Ġclass ĠHome Screen Label Type ( val Ġvalue : ĠString ) Ġ{ ĊĠĠĠ ĠSIGNAL (" signal "), ĊĠĠĠ ĠF REQ UENCY (" frequency ") Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġnetwork Ġtechnology Ċ Ġ*/ Ċ @ Suppress Lint (" SetText I 1 8 n ") Ċ @ Binding Adapter ( ĊĠĠĠ Ġvalue Ġ= Ġ[" main Text ", Ġ" network Type ", Ġ" network Type Secondary ", Ġ" label Type ", Ġ" signal ", Ġ" signal Secondary "], ĊĠĠĠ Ġrequire All Ġ= Ġtrue Ċ ) Ċ fun ĠAppCompat TextView . append Type ( ĊĠĠĠ Ġmain Text : ĠString , ĊĠĠĠ Ġnetwork Type : ĠNetwork Info ?, ĊĠĠĠ Ġnetwork Type Secondary : ĠNetwork Info ?, ĊĠĠĠ Ġlabel Type : ĠString , ĊĠĠĠ Ġsignal : ĠInt ?, ĊĠĠĠ Ġsignal Secondary : ĠInt ? Ċ ) Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= Ġwhen Ġ( label Type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠHome Screen Label Type . FREQ UENCY . value Ġ-> Ġprepare Frequency Label ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type Secondary ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠHome Screen Label Type . SIGNAL . value Ġ-> Ġprepare Signal Label ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type Secondary , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Secondary ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠStringBuilder (). append ( main Text ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtext Ġ= Ġbuilder . toString () Ċ } Ċ Ċ private Ġfun ĠAppCompat TextView . prepare Frequency Label ( ĊĠĠĠ Ġmain Text : ĠString , ĊĠĠĠ Ġnetwork Type : ĠNetwork Info ?, ĊĠĠĠ Ġnetwork Type Secondary : ĠNetwork Info ? Ċ ): ĠStringBuilder Ġ{ ĊĠĠĠ Ġval Ġmain Type Ġ= Ġwhen Ġ( network Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠCell Network Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Type . cell Type Ġ== ĠCell Tech nology . CONNECTION _ UNKNOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type . cell Type . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġsecondary Type Ġ= Ġwhen Ġ( network Type Secondary ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠCell Network Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Type Secondary . cell Type Ġ== ĠCell Tech nology . CONNECTION _ UNKNOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type Secondary . cell Type . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠ Ġif Ġ( main Text . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . append ( main Text ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( network Type Ġis ĠCell Network Info Ġ&& Ġnetwork Type . network Type Ġ== ĠMobile Network Type . NR _ NS A ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( main Type . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" Ġ$ main Type ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( extract Frequency ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type Secondary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. contains ("/") Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( secondary Type . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("/ $ secondary Type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbuilder Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġsignal Ċ Ġ*/ Ċ @ Binding Adapter (" simple Signal ") Ċ fun ĠAppCompat TextView . set Signal ( ĊĠĠĠ Ġsignal : ĠInt ? Ċ ) Ġ{ ĊĠĠĠ Ġtext Ġ= Ġif Ġ( signal Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠString . format ( context . getString ( R . string . home _ signal _ value ), Ġsignal ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ"-" ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġsignal Ċ Ġ*/ Ċ @ Binding Adapter (" signal ", Ġ" signal Secondary ", Ġ" signal Network Info ") Ċ fun ĠAppCompat TextView . set Signal ( ĊĠĠĠ Ġsignal : ĠInt ?, ĊĠĠĠ Ġsignal Secondary : ĠInt ?, ĊĠĠĠ Ġsignal Network Info : ĠNetwork Info ? Ċ ) Ġ{ ĊĠĠĠ Ġtext Ġ= Ġextract Signal Values ( this . context , Ġsignal , Ġsignal Secondary , Ġsignal Network Info ) Ċ } Ċ Ċ private Ġfun Ġextract Signal Values ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġsignal : ĠInt ?, ĊĠĠĠ Ġsignal Secondary : ĠInt ?, ĊĠĠĠ Ġsignal Network Info : ĠNetwork Info ? Ċ ) Ġ= ĊĠĠĠ Ġif Ġ( signal Ġ!= Ġnull Ġ&& Ġsignal Secondary Ġ!= Ġnull Ġ&& Ġsignal Network Info Ġis ĠCell Network Info Ġ&& Ġsignal Network Info . network Type Ġ== ĠMobile Network Type . NR _ NS A ) Ġ{ ĊĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . home _ signal _ secondary _ value ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Secondary ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġif Ġ( signal Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠString . format ( context . getString ( R . string . home _ signal _ value ), Ġsignal ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ"-" ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġfrequency Ċ Ġ*/ Ċ @ Binding Adapter (" frequency ", Ġ" frequency Secondary ") Ċ fun ĠAppCompat TextView . set Frequency ( network Info : ĠNetwork Info ?, Ġsecondary Network Info : ĠNetwork Info ?) Ġ{ ĊĊĠĠĠ Ġtext Ġ= Ġwhen Ġ( network Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠW ifi Network Info Ġ-> Ġnetwork Info . band . name ĊĠĠĠĠĠĠĠ Ġis ĠCell Network Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġdisplay Ġsecondary Ġsignal Ġonly Ġfor ĠNR _ NS A Ġtype Ġof Ġthe Ġnetwork ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextract Frequency ( network Info , Ġsecondary Network Info , Ġthis . context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"-" ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġextract Frequency ( ĊĠĠĠ Ġnetwork Info : ĠCell Network Info , ĊĠĠĠ Ġsecondary Network Info : ĠNetwork Info ?, ĊĠĠĠ Ġcontext : ĠContext Ċ ): ĠString ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( secondary Network Info Ġ== Ġnull Ġ|| Ġnetwork Info . network Type Ġ!= ĠMobile Network Type . NR _ NS A ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( network Info . band ?. name ?. contains (" MHz ") Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Info . band ?. name ?. remove Suffix (" MHz ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . home _ frequency _ value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Info . band ?. name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġif Ġ( network Info . band ?. name ?. contains (" MHz ") Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( network Info . band ?. name ?. remove Suffix (" MHz ")) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( if Ġ( network Info . band ?. name . isNull OrEmpty ()) Ġ"-" Ġelse Ġnetwork Info . band ?. name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( secondary Network Info Ġis ĠCell Network Info ) Ġ&& Ġsecondary Network Info . band ?. name ?. isNull OrEmpty () Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("/") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( secondary Network Info . band ?. name ?. contains (" MHz ") Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( secondary Network Info . band ?. name ?. remove Suffix (" MHz ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( if Ġ( secondary Network Info . band ?. name . isNull OrEmpty ()) Ġ"-" Ġelse Ġsecondary Network Info . band ?. name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠString . format ( context . getString ( R . string . home _ frequency _ value ), Ġbuilder . toString ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġfrequency Ċ Ġ*/ Ċ @ Binding Adapter (" frequency Visibility ") Ċ fun ĠView . frequency Visibility ( network Info : ĠNetwork Info ?) Ġ{ ĊĠĠĠ Ġvisibility Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( network Info Ġ!= Ġnull Ġ&& Ġnetwork Info Ġis ĠCell Network Info Ġ&& Ġnetwork Info . band Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġinformation Ġwindow Ċ Ġ* ĠInformation Ġwindow Ġdisplay Ġwhen Ġuser Ġnot Ġdoing Ġaction Ġfor Ġ 2 Ġsecond Ċ Ġ*/ Ċ @ Binding Adapter ( value Ġ= Ġ[" isConnected ", Ġ" info Window Status "], Ġrequire All Ġ= Ġtrue ) Ċ fun ĠAppCompat TextView . show Popup ( isConnected : ĠBoolean , Ġinfo Window Status : ĠInfo Window Status ) Ġ{ ĊĠĠĠ Ġvisibility Ġ= Ġif Ġ( isConnected ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( info Window Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInfo Window Status . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInfo Window Status . VISIBLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInfo Window Status . GONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġnetwork Ġicon Ġbased Ġon Ġnetwork Ġtype Ġ( WIFI / MOB ILE ), Ċ Ġ* Ġand Ġsignal Level ( 0 .. 4 ) Ċ Ġ*/ Ċ @ Binding Adapter (" signal Level ", Ġ" connected ", Ġ" network Transport Type ") Ċ fun ĠAppCompat Image Button . setIcon ( signal Strength Info : ĠSignal Strength Info ?, Ġconnected : ĠBoolean , Ġnetwork Transport Type : ĠTransport Type ?) Ġ{ ĊĊĠĠĠ Ġif Ġ( signal Strength Info Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtransport Type : ĠTransport Type ? Ġ= Ġsignal Strength Info . transport ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength Info . signal Level ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transport Type Ġ== ĠTransport Type . WIFI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ wifi _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( transport Type Ġ== ĠTransport Type . CELL ULAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ mobile _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transport Type Ġ== ĠTransport Type . WIFI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ wifi _ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( transport Type Ġ== ĠTransport Type . CELL ULAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ mobile _ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transport Type Ġ== ĠTransport Type . WIFI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ wifi _ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( transport Type Ġ== ĠTransport Type . CELL ULAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ mobile _ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transport Type Ġ== ĠTransport Type . WIFI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ wifi _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( transport Type Ġ== ĠTransport Type . CELL ULAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ mobile _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( connected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( network Transport Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransport Type . ETHER NET Ġ-> Ġset Image Resource ( R . drawable . ic _ e thernet _ home ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġset Image Resource ( R . drawable . ic _ signal _ unknown ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ no _ internet ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġnetwork Ġtype Ċ Ġ*/ Ċ @ Binding Adapter (" network Type ") Ċ fun ĠAppCompat TextView . set Network Type ( detailed Network Info : ĠD eta iled Network Info ?) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ Ġdisplay Ġ" LTE " Ġ( true ) Ġor Ġ" 4 G / LTE " Ġ( false ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġshort Display Of Tech nology Ġ= Ġtrue ĊĊĠĠĠ Ġtext Ġ= Ġextract Tech nology String ( detailed Network Info , Ġshort Display Of Tech nology ) Ċ } Ċ Ċ private Ġfun ĠAppCompat TextView . extract Tech nology String ( ĊĠĠĠ Ġdetailed Network Info : ĠD eta iled Network Info ?, ĊĠĠĠ Ġshort Display Of Tech nology : ĠBoolean Ċ ) Ġ= Ġwhen Ġ( detailed Network Info ?. network Info ) Ġ{ ĊĠĠĠ Ġis ĠEthernet Network Info Ġ-> Ġcontext . getString ( R . string . home _ e thernet ) ĊĠĠĠ Ġis ĠW ifi Network Info Ġ-> Ġcontext . getString ( R . string . home _ wifi ) ĊĠĠĠ Ġis ĠCell Network Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtechnology Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCell Tech nology . from Mobile Network Type (( detailed Network Info . network Info Ġas ĠCell Network Info ). network Type )?. displayName ĊĠĠĠĠĠĠĠ ĠTim ber . d (" NM Ġnetwork Ġtype Ġto Ġdisplay : Ġ${ ( detailed Network Info . network Info Ġas ĠCell Network Info ). network Type . displayName }") ĊĠĠĠĠĠĠĠ Ġif Ġ( short Display Of Tech nology Ġ|| Ġtechnology Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( detailed Network Info . network Info Ġas ĠCell Network Info ). network Type . displayName ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ technology /${ ( detailed Network Info . network Info Ġas ĠCell Network Info ). network Type . displayName }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ-> Ġ"" Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġtechnology Ġicon Ġfor Ġmobile Ġnetwork Ċ Ġ*/ Ċ @ Binding Adapter (" technology ") Ċ fun ĠAppCompat ImageView . set Tech nology Icon ( network Info : ĠNetwork Info ?) Ġ{ ĊĊĠĠĠ Ġwhen Ġ( network Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠCell Network Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( Cell Tech nology . from Mobile Network Type ( network Info . network Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCell Tech nology . CONNECTION _ 2 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ 2 g ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCell Tech nology . CONNECTION _ 3 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ 3 g ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCell Tech nology . CONNECTION _ 4 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ 4 g ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCell Tech nology . CONNECTION _ 4 G _ 5 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ 5 g _ available ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCell Tech nology . CONNECTION _ 5 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ 5 g ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠEthernet Network Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ label _ e thernet ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvisibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġip Ġaddress Ġicon Ċ Ġ*/ Ċ @ Binding Adapter ( value Ġ= Ġ[" Ip Icon "], Ġrequire All Ġ= Ġtrue ) Ċ fun ĠImageView . set IPAddress Icon ( ip Info : ĠIp Info ?) Ġ{ ĊĠĠĠ Ġip Info ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis IPV 4 Ġ= Ġit . protocol Ġ== ĠIp Protocol . V 4 ĊĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġwhen Ġ( it . ip Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIp Status . NO _ INFO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 0 . 2 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is IPV 4 ) ĠR . drawable . ic _ ipv 4 _ gray Ġelse ĠR . drawable . ic _ ipv 6 _ gray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIp Status . NO _ ADDRESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is IPV 4 ) ĠR . drawable . ic _ ipv 4 _ red Ġelse ĠR . drawable . ic _ ipv 6 _ red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIp Status . NO _ NAT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is IPV 4 ) ĠR . drawable . ic _ ipv 4 _ green Ġelse ĠR . drawable . ic _ ipv 6 _ green ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is IPV 4 ) ĠR . drawable . ic _ ipv 4 _ yellow Ġelse ĠR . drawable . ic _ ipv 6 _ yellow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Image Resource ( res ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" wave Enabled ") Ċ fun Ġwave Enabled ( view : ĠWave View , Ġenabled : ĠBoolean ) Ġ{ ĊĠĠĠ Ġview . wave Enabled Ġ= Ġenabled Ċ } Ċ Ċ val ĠTH RESH OLD _ PING Ġ= ĠlistOf ( 0 . 0 , Ġ 1 0 . 0 , Ġ 2 5 . 0 , Ġ 7 5 . 0 ) Ġ// Ġ 0 ms , Ġ 1 0 ms , Ġ 2 5 ms , Ġ 7 5 ms Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġping Ġvalue Ċ Ġ*/ Ċ @ Binding Adapter (" ping Ms ") Ċ fun ĠAppCompat TextView . set Ping ( ping Nan os : ĠLong ) Ġ{ ĊĊĠĠĠ Ġif Ġ( ping Nan os Ġ> Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġping Result Ġ= Ġif Ġ( ping Nan os Ġ> Ġ 1 0 0 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( ping Nan os Ġ/ Ġ 1 0 0 0 0 0 0 . 0 ). round To Long (). toDouble () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( ping Nan os Ġ/ Ġ 1 0 0 0 0 0 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( ping Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ PING [ 3 ] .. Double . MAX _ VALUE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ red ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ PING [ 2 ] .. THRESHOLD _ PING [ 3 ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ yellow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ PING [ 1 ] .. THRESHOLD _ PING [ 2 ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ light _ green ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ PING [ 0 ] .. THRESHOLD _ PING [ 1 ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ dark _ green ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ gray ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 0 , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġset TextColor ( context . getColor ( android . R . color . white )) ĊĠĠĠĠĠĠĠ Ġval Ġm antis sa Ġ= Ġping Result Ġ- Ġ( ping Result . toInt (). toDouble ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( m antis sa Ġ> Ġ 0 Ġ&& Ġping Result Ġ< Ġ 1 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . measurement _ ping _ value _ 1 f , Ġping Result ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . measurement _ ping _ value , Ġping Result . round ToInt (). toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ small _ ping _ gray , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset TextColor ( context . getColor ( R . color . text _ white _ tr ansparency _ 4 0 )) ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . measurement _ dash ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ val ĠTH RESH OLD _ DOWNLOAD Ġ= ĠlistOf ( 0 L , Ġ 1 0 0 0 0 0 0 L , Ġ 2 0 0 0 0 0 0 L , Ġ 3 0 0 0 0 0 0 0 L ) Ġ// Ġ 0 mb , Ġ 1 mb , Ġ 2 mb , Ġ 3 0 mb Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġdownload Ġspeed Ċ Ġ*/ Ċ @ Binding Adapter (" download Speed B ps ") Ċ fun ĠAppCompat TextView . set Download ( download Speed B ps : ĠLong ) Ġ{ ĊĊĠĠĠ Ġif Ġ( download Speed B ps Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdownload Speed In Mb ps : ĠFloat Ġ= Ġdownload Speed B ps Ġ/ Ġ 1 0 0 0 0 0 0 . 0 f ĊĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( download Speed B ps ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ DOWNLOAD [ 0 ] Ġuntil ĠTH RESH OLD _ DOWNLOAD [ 1 ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ download _ red ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ DOWNLOAD [ 1 ] Ġuntil ĠTH RESH OLD _ DOWNLOAD [ 2 ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ download _ yellow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ DOWNLOAD [ 2 ] Ġuntil ĠTH RESH OLD _ DOWNLOAD [ 3 ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ download _ light _ green ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ download _ dark _ green ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 0 , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . measurement _ download _ upload _ speed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Speed In Mb ps . format () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġset TextColor ( context . getColor ( android . R . color . white )) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ small _ download _ gray , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset TextColor ( context . getColor ( R . color . text _ white _ tr ansparency _ 4 0 )) ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . measurement _ dash ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ val ĠTH RESH OLD _ UPLOAD Ġ= ĠlistOf ( 0 L , Ġ 5 0 0 0 0 0 L , Ġ 1 0 0 0 0 0 0 L , Ġ 1 0 0 0 0 0 0 0 L ) Ġ// Ġ 0 mb , Ġ 0 . 5 mb , Ġ 1 mb , Ġ 1 0 mb Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġupload Ġspeed Ċ Ġ*/ Ċ @ Binding Adapter (" upload Speed B ps ") Ċ fun ĠAppCompat TextView . set Upload ( upload Speed B ps : ĠLong ) Ġ{ ĊĊĠĠĠ Ġif Ġ( upload Speed B ps Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupload Speed In Mb ps : ĠFloat Ġ= Ġupload Speed B ps Ġ/ Ġ 1 0 0 0 0 0 0 . 0 f ĊĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( upload Speed B ps ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ UPLOAD [ 0 ] Ġuntil ĠTH RESH OLD _ UPLOAD [ 1 ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ upload _ red ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ UPLOAD [ 1 ] Ġuntil ĠTH RESH OLD _ UPLOAD [ 2 ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ upload _ yellow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠTH RESH OLD _ UPLOAD [ 2 ] Ġuntil ĠTH RESH OLD _ UPLOAD [ 3 ] Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ upload _ light _ green ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ upload _ dark _ green ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 0 , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . measurement _ download _ upload _ speed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Speed In Mb ps . format () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġset TextColor ( context . getColor ( android . R . color . white )) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ small _ upload _ gray , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset TextColor ( context . getColor ( R . color . text _ white _ tr ansparency _ 4 0 )) ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . measurement _ dash ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġnetwork Ġicon Ġbased Ġon Ġnetwork Ġtype Ġ( WIFI / MOB ILE ), Ċ Ġ* Ġand Ġsignal Level ( 0 .. 4 ) Ċ Ġ*/ Ċ @ Binding Adapter (" measurement Signal Level ", Ġ" connected ") Ċ fun ĠAppCompat ImageView . set Small Icon ( signal Strength Info : ĠSignal Strength Info ?, Ġconnection Available : ĠBoolean ) Ġ{ ĊĊĠĠĠ Ġif Ġ( connection Available ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength Info ?. transport ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransport Type . WIFI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength Info . signal Level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ small _ wifi _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ small _ wifi _ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ small _ wifi _ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ small _ wifi _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransport Type . CELL ULAR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength Info . signal Level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ small _ mobile _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ small _ mobile _ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ small _ mobile _ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ small _ mobile _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ signal _ unknown _ small ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ signal _ unknown _ small ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġdownload Ġand Ġupload Ġdata Ġon Ġgraph Ċ Ġ*/ Ċ @ Binding Adapter (" graph Items ") Ċ fun ĠSpeed Line Chart . set Graph Items ( graph Items : ĠList < Graph Item Record > ?) Ġ{ ĊĠĠĠ Ġadd Graph Items ( graph Items ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġclear Ġdownload Ġand Ġupload Ġdata Ċ Ġ*/ Ċ @ Binding Adapter (" reset ") Ċ fun ĠSpeed Line Chart . reset ( measurement State : ĠMeasurement State ) Ġ{ ĊĊĠĠĠ Ġwhen Ġ( measurement State ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMeasurement State . IDLE , ĠMeasurement State . INIT , ĊĠĠĠĠĠĠĠ ĠMeasurement State . DOWNLOAD , ĠMeasurement State . UPLOAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" speed ") Ċ fun ĠMeasurement Curve Layout . set Speed ( speed : ĠLong ) Ġ{ ĊĠĠĠ Ġset Bottom Progress ( speed ) Ċ } Ċ Ċ @ Binding Adapter (" percentage ") Ċ fun ĠMeasurement Curve Layout . set Percent s ( percentage : ĠInt ) Ġ{ ĊĠĠĠ Ġset Top Progress ( percentage ) Ċ } Ċ Ċ @ Binding Adapter (" strength ") Ċ fun ĠMeasurement Curve Layout . set Signal ( signal Level : ĠSignal Strength Info ?) Ġ{ ĊĠĠĠ Ġset Signal Strength ( signal Level ) Ċ } Ċ Ċ @ Binding Adapter (" measurement Phase ") Ċ fun ĠMeasurement Curve Layout . set Measurement Phase ( state : ĠMeasurement State ) Ġ{ ĊĠĠĠ Ġset Measurement State ( state ) Ċ } Ċ Ċ @ Binding Adapter (" qos Enabled ") Ċ fun ĠMeasurement Curve Layout . set Q os Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠ Ġset Qo S Enabled ( enabled ) Ċ } Ċ Ċ @ Binding Adapter (" progress _ enabled ") Ċ fun ĠProgress Bar . set Progress Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠ Ġset Progress Enabled ( enabled ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġlabel Ġof Ġmeasurement Ġstate Ċ Ġ*/ Ċ @ Binding Adapter (" label Measurement State ") Ċ fun ĠAppCompat TextView . setLabel Of Measurement State ( measurement State : ĠMeasurement State ) Ġ{ ĊĊĠĠĠ Ġwhen Ġ( measurement State ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMeasurement State . IDLE , ĠMeasurement State . INIT , ĠMeasurement State . PING , ĠMeasurement State . DOWNLOAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . measurement _ download ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠMeasurement State . UPLOAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . measurement _ upload ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠMeasurement State . Q OS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . measurement _ qos ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" bottom Sheet State ") Ċ fun ĠConstraint Layout . set Bottom Sheet State ( state : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġbehavior Ġ= ĠBottom Sheet Behavior . from ( this ) ĊĠĠĠ Ġbehavior . state Ġ= Ġstate Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġdate Ġand Ġtime Ġin Ġhistory Ġlist Ċ Ġ*/ Ċ @ Binding Adapter (" network Type ", Ġ" history Time ", Ġ" history Timezone ", Ġ" history Signal Strength ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠAppCompat TextView . set History Time ( network Type : ĠNetwork Type Compat , Ġhistory Time : ĠLong , Ġhistory Timezone : ĠString , Ġsignal Strength : ĠClassification ) Ġ{ ĊĊĠĠĠ Ġval Ġcalendar : ĠCalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġcalendar . time In Millis Ġ= Ġhistory Time ĊĠĠĠ Ġcalendar . time Zone Ġ= ĠTime Zone . getTime Zone ( history Timezone ) ĊĠĠĠ Ġtext Ġ= Ġcalendar . format (" dd . MM . yy , ĠHH : mm : ss ") ĊĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( get Signal Image Resource ( network Type , Ġsignal Strength ), Ġ 0 , Ġ 0 , Ġ 0 ) Ċ } Ċ Ċ @ Binding Adapter (" history Time ", Ġ" history Timezone ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠAppCompat TextView . set History Time ( history Time : ĠLong , Ġhistory Timezone : ĠString ) Ġ{ ĊĊĠĠĠ Ġval Ġcalendar : ĠCalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġcalendar . time In Millis Ġ= Ġhistory Time ĊĠĠĠ Ġcalendar . time Zone Ġ= ĠTime Zone . getTime Zone ( history Timezone ) ĊĠĠĠ Ġtext Ġ= Ġcalendar . format (" dd . MM . yy , ĠHH : mm : ss ") Ċ } Ċ Ċ @ Binding Adapter (" network Type ", Ġ" history Signal Strength ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠImageView . set Signal Icon ( network Type : ĠNetwork Type Compat ?, Ġsignal Strength : ĠClassification ) Ġ{ ĊĠĠĠ Ġnetwork Type ?. let Ġ{ Ġset Image Resource ( get Signal Image Resource ( it , Ġsignal Strength )) Ġ} Ċ } Ċ Ċ private Ġfun Ġget Signal Image Resource ( network Type : ĠNetwork Type Compat , Ġsignal Strength : ĠClassification ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( network Type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 2 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> ĠR . drawable . ic _ history _ 2 g _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> ĠR . drawable . ic _ history _ 2 g _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> ĠR . drawable . ic _ history _ 2 g _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> ĠR . drawable . ic _ history _ 2 g _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> ĠR . drawable . ic _ signal _ unknown _ small ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 3 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> ĠR . drawable . ic _ history _ 3 g _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> ĠR . drawable . ic _ history _ 3 g _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> ĠR . drawable . ic _ history _ 3 g _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> ĠR . drawable . ic _ history _ 3 g _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> ĠR . drawable . ic _ signal _ unknown _ small ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 5 G _ AVAILABLE , ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 4 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> ĠR . drawable . ic _ history _ 4 g _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> ĠR . drawable . ic _ history _ 4 g _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> ĠR . drawable . ic _ history _ 4 g _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> ĠR . drawable . ic _ history _ 4 g _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> ĠR . drawable . ic _ signal _ unknown _ small ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ WLAN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> ĠR . drawable . ic _ history _ wifi _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> ĠR . drawable . ic _ history _ wifi _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> ĠR . drawable . ic _ history _ wifi _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> ĠR . drawable . ic _ history _ wifi _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> ĠR . drawable . ic _ signal _ unknown _ small ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ UNKNOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ signal _ unknown _ small ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ LAN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ e thernet ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ BROWSER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ browser ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 5 G _ NS A , ĊĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 5 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> ĠR . drawable . ic _ history _ 5 g _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> ĠR . drawable . ic _ history _ 5 g _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> ĠR . drawable . ic _ history _ 5 g _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> ĠR . drawable . ic _ history _ 5 g _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> ĠR . drawable . ic _ signal _ unknown _ small ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġdate Ġand Ġtime Ġin Ġresult Ġdetails Ċ Ġ*/ Ċ @ Binding Adapter (" result Time ", Ġ" result Timezone ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠAppCompat TextView . set Result Time ( result Time : ĠLong ?, Ġresult Timezone : ĠString ?) Ġ{ ĊĠĠĠ Ġif Ġ( result Time Ġ!= Ġnull Ġ&& Ġresult Timezone Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar : ĠCalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . time In Millis Ġ= Ġresult Time ĊĠĠĠĠĠĠĠ Ġcalendar . time Zone Ġ= ĠTime Zone . getTime Zone ( result Timezone ) ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġcalendar . format (" dd . MM . yy , ĠHH : mm : ss ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġdownload Ġspeed Ġwith Ġclassification Ġicon Ġin Ġhistory Ġlist Ċ Ġ*/ Ċ @ Binding Adapter (" speed Download Classification ") Ċ fun ĠAppCompat TextView . set Download ( speed Download Classification : ĠClassification ) Ġ{ ĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( get Speed Download Classification ( speed Download Classification ), Ġ 0 , Ġ 0 , Ġ 0 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġdownload Ġspeed Ġwith Ġclassification Ġicon Ġin Ġresults Ċ Ġ*/ Ċ @ Binding Adapter (" speed Download Result ", Ġ" speed Download Classification Result ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠAppCompat TextView . speed Download Result ( speed Download Result : ĠLong , Ġspeed Download Classification Result : ĠClassification ) Ġ{ ĊĊĠĠĠ Ġtext Ġ= Ġif Ġ( speed Download Result Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . measurement _ download _ upload _ speed , Ġ(( speed Download Result . toFloat () Ġ/ Ġ 1 0 0 0 f ). format ())) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . measurement _ dash ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( get Speed Download Classification ( speed Download Classification Result ), Ġ 0 , Ġ 0 , Ġ 0 ) Ċ } Ċ Ċ fun Ġget Speed Download Classification ( speed Download Classification : ĠClassification ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( speed Download Classification ) Ġ{ ĊĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ download _ gray ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ download _ red ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ download _ yellow ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ download _ light _ green ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ download _ dark _ green ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġupload Ġspeed Ġwith Ġclassification Ġicon Ġin Ġresults Ċ Ġ*/ Ċ @ Binding Adapter (" speed Upload Result ", Ġ" speed Upload Classification Result ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠAppCompat TextView . speed Upload Result ( speed Upload Result : ĠLong , Ġspeed Upload Classification Result : ĠClassification ) Ġ{ ĊĠĠĠ Ġtext Ġ= Ġif Ġ( speed Upload Result Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . measurement _ download _ upload _ speed , Ġ(( speed Upload Result . toFloat () Ġ/ Ġ 1 0 0 0 f ). format ())) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . measurement _ dash ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( get Speed Upload Classification Icon ( speed Upload Classification Result ), Ġ 0 , Ġ 0 , Ġ 0 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġupload Ġspeed Ġwith Ġclassification Ġicon Ġin Ġhistory Ġlist Ċ Ġ*/ Ċ @ Binding Adapter (" speed Upload Classification ") Ċ fun ĠAppCompat TextView . set Upload ( speed Upload Classification : ĠClassification ) Ġ{ ĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( get Speed Upload Classification Icon ( speed Upload Classification ), Ġ 0 , Ġ 0 , Ġ 0 ) Ċ } Ċ Ċ fun Ġget Speed Upload Classification Icon ( speed Upload Classification : ĠClassification ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( speed Upload Classification ) Ġ{ ĊĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ upload _ gray ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ upload _ red ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ upload _ yellow ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ upload _ light _ green ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ upload _ dark _ green ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġdownload Ġping Ġwith Ġclassification Ġicon Ġin Ġhistory Ġlist Ċ Ġ*/ Ċ @ Binding Adapter (" ping Classification ") Ċ fun ĠAppCompat TextView . set Ping ( ping Classification : ĠClassification ) Ġ{ ĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( get Ping Classification Icon ( ping Classification ), Ġ 0 , Ġ 0 , Ġ 0 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġdownload Ġping Ġwith Ġclassification Ġicon Ġin Ġresults Ċ Ġ*/ Ċ @ Binding Adapter (" ping Result ", Ġ" ping Classification Result ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠAppCompat TextView . set Ping Result ( ping Result : ĠDouble , Ġping Classification Result : ĠClassification ) Ġ{ ĊĠĠĠ Ġtext Ġ= Ġif Ġ( ping Result Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm antis sa Ġ= Ġping Result Ġ- Ġ( ping Result . toInt (). toDouble ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( m antis sa Ġ> Ġ 0 Ġ&& Ġping Result Ġ< Ġ 1 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . measurement _ ping _ value _ 1 f , Ġping Result ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . measurement _ ping _ value , Ġping Result . round ToInt (). toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . measurement _ dash ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( get Ping Classification Icon ( ping Classification Result ), Ġ 0 , Ġ 0 , Ġ 0 ) Ċ } Ċ Ċ fun Ġget Ping Classification Icon ( ping Classification : ĠClassification ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( ping Classification ) Ġ{ ĊĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ gray ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ red ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ yellow ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ light _ green ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ ping _ dark _ green ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġsignal Ġstrength Ġwith Ġclassification Ġicon Ġin Ġresult Ċ Ġ*/ Ċ @ Binding Adapter (" signal Strength Result ", Ġ" signal Strength Classification Result ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠAppCompat TextView . set Signal Strength ( signal Strength Result : ĠInt ?, Ġsignal Strength Classification Result : ĠClassification ) Ġ{ ĊĊĠĠĠ Ġtext Ġ= Ġif Ġ( signal Strength Result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . strength _ signal _ value , Ġsignal Strength Result ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . measurement _ dash ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength Classification Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ gray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ yellow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ light _ green ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ dark _ green ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ 0 , Ġ 0 , Ġ 0 ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġcorrect Ġicon Ġfor Ġq oe Ġitem Ġin Ġthe Ġresults Ċ Ġ*/ Ċ @ Binding Adapter (" q oe Icon ") Ċ fun ĠAppCompat ImageView . set Qo E Icon ( qo E Category : ĠQ o E Category ) Ġ{ ĊĠĠĠ Ġset Image Drawable ( ĊĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( qo E Category ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ UNKNOWN Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ AUDIO _ STREAM ING Ġ-> ĠR . drawable . ic _ q oe _ music ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ SD Ġ-> ĠR . drawable . ic _ q oe _ video ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ HD Ġ-> ĠR . drawable . ic _ q oe _ video ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ U HD Ġ-> ĠR . drawable . ic _ q oe _ video ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ G AM ING Ġ-> ĠR . drawable . ic _ q oe _ game ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ G AM ING _ CLOUD Ġ-> ĠR . drawable . ic _ q oe _ game ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ G AM ING _ STREAM ING Ġ-> ĠR . drawable . ic _ q oe _ game ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ G AM ING _ DOWNLOAD Ġ-> ĠR . drawable . ic _ q oe _ game ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VO IP Ġ-> ĠR . drawable . ic _ q oe _ vo ip ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ TELE PHONY Ġ-> ĠR . drawable . ic _ q oe _ vo ip ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ CON FER ENC ING Ġ-> ĠR . drawable . ic _ q oe _ vo ip ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ MESS AGING Ġ-> ĠR . drawable . ic _ q oe _ image ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ WEB Ġ-> ĠR . drawable . ic _ q oe _ image ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ CLOUD Ġ-> ĠR . drawable . ic _ q oe _ image ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ Q OS Ġ-> ĠR . drawable . ic _ q oe _ qos ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġname Ġfor Ġq oe Ġitem Ġin Ġthe Ġresults Ċ Ġ*/ Ċ @ Binding Adapter (" q oe Name ") Ċ fun ĠAppCompat TextView . set Qo E Name ( qo E Category : ĠQ o E Category ) Ġ{ ĊĠĠĠ Ġtext Ġ= Ġcontext . getString ( ĊĠĠĠĠĠĠĠ Ġwhen Ġ( qo E Category ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ UNKNOWN Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ AUDIO _ STREAM ING Ġ-> ĠR . string . results _ q oe _ audio _ streaming ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ SD Ġ-> ĠR . string . results _ q oe _ videos _ sd ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ HD Ġ-> ĠR . string . results _ q oe _ videos _ hd ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ U HD Ġ-> ĠR . string . results _ q oe _ videos _ u hd ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ G AM ING Ġ-> ĠR . string . results _ q oe _ g aming ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ G AM ING _ CLOUD Ġ-> ĠR . string . results _ q oe _ g aming _ cloud ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ G AM ING _ STREAM ING Ġ-> ĠR . string . results _ q oe _ g aming _ streaming ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ G AM ING _ DOWNLOAD Ġ-> ĠR . string . results _ q oe _ g aming _ download ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VO IP Ġ-> ĠR . string . results _ q oe _ vo ip ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ TELE PHONY Ġ-> ĠR . string . results _ q oe _ video _ tele phony ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ VIDEO _ CON FER ENC ING Ġ-> ĠR . string . results _ q oe _ video _ con fer encing ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ MESS AGING Ġ-> ĠR . string . results _ q oe _ messaging ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ WEB Ġ-> ĠR . string . results _ q oe _ web ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ CLOUD Ġ-> ĠR . string . results _ q oe _ cloud ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ o E Category . QO E _ Q OS Ġ-> ĠR . string . results _ q oe _ qos ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġcorrect Ġvalue Ġfor Ġq oe Ġitem Ġin Ġthe Ġresults Ċ Ġ*/ Ċ @ Binding Adapter (" q oe Percent ", Ġ" classification ") Ċ fun ĠResult Bar . set Qo E Value ( value : ĠDouble , Ġclassification : ĠClassification ) Ġ{ ĊĠĠĠ Ġval Ġq oe Min Threshold Ġ= Ġ 0 . 1 6 f ĊĠĠĠ Ġif Ġ( value Ġ< Ġq oe Min Threshold ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Classification (( q oe Min Threshold Ġ* Ġ 1 0 0 ). toInt (), ĠClassification . BAD ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Classification (( value Ġ* Ġ 1 0 0 ). toInt (), Ġclassification ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" network Type ", Ġ" signal Strength ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠImageView . set Network Type ( network Type : ĠString , Ġsignal Strength : ĠClassification ) Ġ{ ĊĠĠĠ Ġif Ġ( network Type Ġ!= ĠServer Network Type . TYPE _ UNKNOWN . stringValue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Image Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( Network Type Compat . fromString ( network Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 2 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ history _ 2 g ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 3 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ history _ 3 g ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 5 G _ AVAILABLE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 4 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ history _ 4 g ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ UNKNOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ history _ no _ internet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ LAN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ BROWSER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ browser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ WLAN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> ĠR . drawable . ic _ history _ wifi _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> ĠR . drawable . ic _ history _ wifi _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> ĠR . drawable . ic _ history _ wifi _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> ĠR . drawable . ic _ history _ wifi _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> ĠR . drawable . ic _ history _ no _ internet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 5 G _ NS A , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Type Compat . TYPE _ 5 G Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ history _ 5 g _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ history _ no _ internet ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" time String ") Ċ fun ĠAppCompat TextView . setTime As 2 4 h ( time : ĠLong ) Ġ{ ĊĠĠĠ Ġtext Ġ= ĠSimpleDateFormat (" dd . MM . yy , ĠHH : mm : ss ", ĠLocale . US ). format ( Date ( time )) Ċ } Ċ Ċ @ Binding Adapter (" signal Strength Map ", Ġ" signal Strength Classification Map ", Ġrequire All Ġ= Ġtrue ) Ċ fun ĠAppCompat TextView . set Signal Strength Map ( signal Strength Result : ĠString ?, Ġsignal Strength Classification Result : ĠClassification ) Ġ{ ĊĊĠĠĠ Ġtext Ġ= Ġsignal Strength Result Ġ?: Ġcontext . getString ( R . string . measurement _ dash ) ĊĊĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( signal Strength Classification Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ gray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . BAD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . NORMAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ yellow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . GO OD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ light _ green ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification . EX CELL ENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ small _ wifi _ dark _ green ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ 0 , Ġ 0 , Ġ 0 ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbinding Ġadapter Ġthat Ġis Ġused Ġfor Ġshow Ġnetwork Ġtype Ċ Ġ*/ Ċ @ Binding Adapter (" network Type Detailed ") Ċ fun ĠAppCompat TextView . set Detailed Network Type ( network Type Detailed : ĠD eta iled Network Info ?) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ Ġdisplay Ġ" LTE " Ġ( true ) Ġor Ġ" 4 G / LTE " Ġ( false ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġshort Display Of Tech nology Ġ= Ġfalse ĊĊĠĠĠ Ġtext Ġ= Ġextract Tech nology String ( network Type Detailed , Ġshort Display Of Tech nology ) Ċ }