package Ġcom . hi . d hl . demo . kt kit Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcom . hi . d hl . binding . view bind Ċ import Ġcom . hi . d hl . demo . kt kit . databinding . Activity Main Binding Ċ import Ġcom . hi . d hl . demo . kt kit . login . Login Activity Ċ import Ġcom . hi . d hl . demo . kt kit . model . People Model Ċ import Ġcom . hi . d hl . kt kit . common .* Ċ import Ġcom . hi . d hl . kt kit . core .* Ċ import Ġcom . hi . d hl . kt kit . ui .* Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding : ĠActivity Main Binding Ġby Ġview bind () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġget Views (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . click ( lifecycle Scope ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . btn De bounce . click Trigger ( lifecycle Scope , Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit View () ĊĊĠĠĠĠĠĠĠ Ġvar Ġjson Ġ= ĠPeople Model (" d hl "). toJson () ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" json Ġ= Ġ$ json Ġ Ġmd 5 Ġ= Ġ${ json . md 5 () }") ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġjson . fromJson < People Model >() ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" model Ġ= Ġ$ model ") ĊĊĠĠĠĠĠĠĠ Ġjson Ġ= ĠPeople Model (" d hl "). toJson ( true ) ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" json Ġ= Ġ$ json ") ĊĊĠĠĠĠĠĠĠ Ġtest Network () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Network () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" has Network Ġ= Ġ${ has Network () }") ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" get Network Type Ġ= Ġ${ get Network Type () }") ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" connected To Wifi Ġ= Ġ${ isConnected To Wifi () }") ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" connected To Bluetooth Ġ= Ġ${ isConnected To Bluetooth () }") ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" get Bandwidth Kb ps Ġ= Ġ${ get Bandwidth Kb ps () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Fast Net Work With Wifi (). collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" listen Network Ġ= Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġph ont Number Str Ġ= Ġ" 0 4 4 Ġ 6 6 8 Ġ 1 8 Ġ 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Format PhoneNumber . setText ( ph ont Number Str . format PhoneNumber (" CH ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġ" width Ġ= Ġ$ screen Width Ġheight Ġ= Ġ$ screen Height Ġdensity Ġ= Ġ$ density Ġdp 2 px Ġ= Ġ${ dp 2 px ( 1 0 )} Ġpx 2 dp Ġ= Ġ${ px 2 dp ( 1 0 )}" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Screen . setText ( screen ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtv Screen . append (" has Network Ġ= Ġ${ has Network () }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg Screen . set BackgroundColor ( color ( R . color . purple _ 5 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg Screen . setImage Drawable ( drawable ( R . drawable . ic _ launcher _ foreground )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit ext . set Round Rect Bg ( color ( R . color . purple _ 5 0 0 ), Ġ 3 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit ext . text Change ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Ġ= Ġlifecycle Scope ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" text Change Ġ= Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit ext . text Change With before ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Ġ= Ġlifecycle Scope ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" text Change With before Ġ= Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit ext . text Change With After ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Ġ= Ġlifecycle Scope ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" text Change With After Ġ= Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( v ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Profile Ġ-> ĠProfile Activity . startActivity ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Add Fragment Ġ-> ĠLogin Activity . startActivity ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Toast Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Short Toast (" åħ¬ ä¼Ĺ åı· ï¼ļ Byte Code ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Short Toast ( R . string . app _ name ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Long Toast (" hi Ġ æĪĳ æĺ¯ Ġd hl ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Long Toast ( R . string . app _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Sn ackBar Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Toast . show Short Snackbar (" åħ¬ ä¼Ĺ åı· ï¼ļ Byte Code ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Toast . show Short Snackbar ( R . string . app _ name ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Toast . show Long Snackbar (" hi Ġ æĪĳ æĺ¯ Ġd hl ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Toast . show Long Snackbar ( R . string . app _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Toast . show Action Sn ackBar (" åħ¬ ä¼Ĺ åı· ï¼ļ Byte Code ", Ġ" click Ġme ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Long Toast (" hi Ġ æĪĳ æĺ¯ Ġd hl ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn De bounce Ġ-> Ġshow Short Toast (" åħ¬ ä¼Ĺ åı· ï¼ļ Byte Code ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Views () Ġ= Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarray ListOf < View >( btn Profile , Ġbtn Add Fragment , Ġbtn Toast , Ġbtn Sn ackBar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠProfile Activity . KEY _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata ?. getString Extra ( Profile Activity . KEY _ RESULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserName Ġ= Ġdata ?. getString Extra ( Profile Activity . KEY _ USER _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Act Result . setText ("$ result Ġ- Ġ$ userName ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠ Ġ} Ċ } Ċ