@ file : Suppress (" PropertyName ") Ċ Ċ package Ġlibrary . view . lib Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context . CONNECT IVITY _ SERVICE Ċ import Ġandroid . content . Context . TELE PHONY _ SERVICE Ċ import Ġandroid . content . Context . WIFI _ SERVICE Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap . Compress Format . JPEG Ċ import Ġandroid . graphics . Bitmap . Config . ARGB _ 8 8 8 8 Ċ import Ġandroid . graphics . Bitmap . create Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Connectivity Manager . CONNECT IVITY _ ACTION Ċ import Ġandroid . net . Connectivity Manager . TYPE _ MOB ILE Ċ import Ġandroid . net . Connectivity Manager . TYPE _ WIFI Ċ import Ġandroid . net . Network Info Ċ import Ġandroid . net . wifi . Wifi Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . tele phony . Phone State Listener Ċ import Ġandroid . tele phony . Signal Strength Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . core . graphics . drawable . Drawable Compat Ċ import Ġio . kot lint est . properties . Gen Ċ import Ġorg . junit . Assert . assertNotNull Ċ import Ġorg . ro bo lectric . Runtime Environment Ċ import Ġorg . ro bo lectric . Shadow s . shadow Of Ċ import Ġorg . ro bo lectric . shadow s . Shadow Network Info . newInstance Ċ import Ġorg . ro bo lectric . shadow s . Shadow Settings . set Air plane Mode Ċ import Ġorg . ro bo lectric . util . Reflection Helpers Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . util . Arrays Ċ Ċ internal Ġconst Ġval ĠIN TI _ VAL Ġ= Ġ 0 Ċ internal Ġconst Ġval ĠMIN _ RSS I Ġ= Ġ- 1 0 0 Ċ internal Ġconst Ġval ĠMAX _ RSS I Ġ= Ġ- 5 5 Ċ Ċ internal Ġval ĠFULL _ LIST _ OF _ NET _ TYPES Ġby Ġlazy Ġ{ ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SPA , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EV DO _ 0 , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EV DO _ A , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SD PA , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SUP A , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SPA , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EV DO _ B , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ E HR PD , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SP AP , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ LTE , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ G PR S , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EDGE , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ CD MA , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ 1 x RT T , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ ID EN ĊĠĠĠ Ġ) Ċ } Ċ Ċ internal Ġval ĠFULL _ LIST _ OF _ NET _ 2 G Ġby Ġlazy Ġ{ ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ G PR S , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EDGE , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ CD MA , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ 1 x RT T , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ ID EN ĊĠĠĠ Ġ) Ċ } Ċ Ċ internal Ġval ĠFULL _ LIST _ OF _ NET _ 3 G Ġby Ġlazy Ġ{ ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SPA , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EV DO _ 0 , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EV DO _ A , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SD PA , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SUP A , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SPA , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ EV DO _ B , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ E HR PD , ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ H SP AP ĊĠĠĠ Ġ) Ċ } Ċ Ċ internal Ġval ĠFULL _ LIST _ OF _ NET _ 4 G Ġby Ġlazy Ġ{ ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠTele phony Manager . NETWORK _ TYPE _ LTE ĊĠĠĠ Ġ) Ċ } Ċ Ċ internal Ġval ĠFULL _ LIST _ OF _ NET _ UNKNOWN Ġby Ġlazy Ġ{ ĊĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠGen . negative Inte gers (). generate () ĊĠĠĠ Ġ) Ċ } Ċ Ċ class ĠTest Net Status View Activity Ġ: ĠActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . test _ net _ status _ view ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T Ġ: ĠView > ĠActivity . apply View (@ Id Res Ġid : ĠInt , Ġblock : ĠT . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠT Ġ= ĊĠĠĠ ĠfindViewById < T >( id ). apply Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( this ) ĊĠĠĠĠĠĠĠ Ġblock ( this ) ĊĠĠĠ Ġ} Ċ Ċ fun Ġcontext (): ĠApplication Ġ= ĠRuntime Environment . application Ċ Ċ fun ĠContext . with Network Test ( ĊĠĠĠ Ġuse Wifi : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġis Us able : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġair plane : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ ĠlistOf Network : ĠList < Int >, ĊĠĠĠ Ġnet Strength : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġassert Block : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĊĠĠĠ Ġ( getSystem Service ( WIFI _ SERVICE ) Ġas ĠW ifi Manager ). let Ġ{ Ġwifi Mgr Ġ-> ĊĠĠĠĠĠĠĠ Ġ( getSystem Service ( TELE PHONY _ SERVICE ) Ġas ĠTele phony Manager ). let Ġ{ Ġtel Mgr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( getSystem Service ( CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ). let Ġ{ Ġc nn Mgr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( wifi Mgr ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Of ( this ). is Wifi Enabled Ġ= Ġuse Wifi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Of ( shadow Of ( this ). connection Info ). set R ssi ( net Strength ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Air plane Mode ( air plane ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Wifi ) ĠTYPE _ WIFI Ġelse ĠTYPE _ MOB ILE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Of ( cnn Mgr ). active Network Info Ġ= Ġnew Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Info . Detailed State . CONNECTED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Us able , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Us able ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! use Wifi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshadow Of ( tel Mgr ). set Network Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGen . one Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Network ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). generate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Helpers . call Constructor ( Signal Strength :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShadow Signal Strength . shadow Of ( this ). setLevel ( net Strength ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( shadow Of ( tel Mgr )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Flags Ġ!= ĠPhone State Listener . LIST EN _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Signal Strength s Changed ( this @ apply ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Broadcast ( Intent ( CONNECT IVITY _ ACTION )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Block () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T Ġ: ĠDrawable > ĠT . bytes EqualTo ( t : ĠT ?) Ġ= Ġto Bitmap (). bytes EqualTo ( t ?. to Bitmap (), Ġtrue ) Ċ Ċ fun ĠBitmap . bytes EqualTo ( other Bitmap : ĠBitmap ?, Ġshould Re cycle : ĠBoolean Ġ= Ġfalse ) Ġ= ĊĠĠĠ Ġother Bitmap ?. let Ġ{ Ġother Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ== Ġother . width Ġ&& Ġheight Ġ== Ġother . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġto Bytes (). content Equals ( other . to Bytes ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Re cycle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Re cycle (). also Ġ{ Ġother Bitmap . do Re cycle () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} Ġ?: Ġkotlin . run Ġ{ Ġfalse Ġ} Ċ Ċ fun ĠBitmap . pixels EqualTo ( other Bitmap : ĠBitmap ?, Ġshould Re cycle : ĠBoolean Ġ= Ġfalse ) Ġ= ĊĠĠĠ Ġother Bitmap ?. let Ġ{ Ġother Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( width Ġ== Ġother . width Ġ&& Ġheight Ġ== Ġother . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= ĠArrays . equals ( to Pixels (), Ġother . to Pixels ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Re cycle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Re cycle (). also Ġ{ Ġother Bitmap . do Re cycle () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} Ġ?: Ġkotlin . run Ġ{ Ġfalse Ġ} Ċ Ċ fun ĠBitmap . do Re cycle () Ġ{ ĊĠĠĠ Ġif Ġ(! is Re cyc led ) Ġre cycle () Ċ } Ċ Ċ fun Ġ< T Ġ: ĠDrawable > ĠT . to Bitmap (): ĠBitmap Ġ{ ĊĠĠĠ Ġif Ġ( this Ġis ĠBitmap Drawable ) Ġreturn Ġbitmap ĊĠĠĠ Ġval Ġdrawable : ĠDrawable Ġ= Ġ( Drawable Compat . wrap ( this )). mutate () ĊĠĠĠ Ġval Ġbitmap Ġ= Ġcreate Bitmap ( ĊĠĠĠĠĠĠĠ Ġdrawable . intrinsic Width , ĊĠĠĠĠĠĠĠ Ġdrawable . intrinsic Height , ĊĠĠĠĠĠĠĠ ĠAR GB _ 8 8 8 8 ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠ Ġdrawable . setBounds ( 0 , Ġ 0 , Ġcanvas . width , Ġcanvas . height ) ĊĠĠĠ Ġdrawable . draw ( canvas ) ĊĠĠĠ Ġreturn Ġbitmap Ċ } Ċ Ċ fun ĠBitmap . to Bytes (): ĠByteArray Ġ= ĠByteArrayOutputStream (). use Ġ{ Ġstream Ġ-> ĊĠĠĠ Ġcompress ( JPEG , Ġ 1 0 0 , Ġstream ) ĊĠĠĠ Ġstream . toByteArray () Ċ } Ċ Ċ fun ĠBitmap . to Pixels () Ġ= ĊĠĠĠ ĠInt Array ( width Ġ* Ġheight ). apply Ġ{ Ġget Pixels ( this , Ġ 0 , Ġwidth , Ġ 0 , Ġ 0 , Ġwidth , Ġheight ) Ġ}