package Ġcom . letter . ink launcher . ui . activity Ċ Ċ import Ġandroid . content . pm . Activity Info Ċ import Ġandroid . content . send Broadcast Ċ import Ġandroid . content . toast Ċ import Ġandroid . os .* Ċ import Ġandroid . view . View Ċ import Ġandroid . view . Window Insets Ċ import Ġandroid . view . Window Insets Controller Ċ import Ġandroid . view . WindowManager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . letter . ink launcher . R Ċ import Ġcom . letter . ink launcher . databinding . Activity Always On Display Binding Ċ import Ġcom . letter . ink launcher . model . bean . Constants Ċ import Ġcom . letter . ink launcher . service . Core Service Ċ import Ġcom . letter . ink launcher . ui . fragment . a od . Simple Time Fragment Ċ import Ġcom . letter . ink launcher . utils . Channel Utils Ċ import Ġcom . letter . presenter . View Presenter Ċ Ċ /** Ċ Ġ* ĠA OD ĠActivity Ċ Ġ* Ġ@ property Ġbinding ĠActivity Always On Display Binding Ġbinding Ċ Ġ* Ġ@ property Ġclick Time ĠLong Ġ çĤ¹åĩ» æĹ¶éĹ´ Ċ Ġ* Ċ Ġ* Ġ@ author ĠLetter ( never mind zz t @ gmail . com ) Ċ Ġ* Ġ@ since Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ class ĠAlways On Display Activity Ġ: ĠAppCompatActivity (), ĠView Presenter Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Always On Display Binding ĊĊĠĠĠ Ġprivate Ġvar Ġclick Time Ġ= Ġ 0 L ĊĊĠĠĠ Ġprivate Ġvar Ġwake Lock : ĠPower Manager . Wake Lock ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġhandler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtoast Runnable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( R . string . toast _ a od _ double _ click _ to _ back _ to _ home ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Always On Display Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ> ĠBuild . VERSION _ CODES . R ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . window Insets Controller ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide ( Window Insets . Type . ime () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠWindow Insets . Type . system Gest ures () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠWindow Insets . Type . system Bars ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetShow When Locked ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Turn Screen On ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġ( View . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠWindow Manager . LayoutParams . FLAG _ FULL SCREEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ> ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . attributes . layout In Display Cut out Mode Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ ALWAYS ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Preference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getBoolean (" a od _ land scape ", Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Orientation Ġ= ĠActivity Info . SCREEN _ OR IENTATION _ LAND SC APE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpower Manager Ġ= Ġ( getSystem Service ( POWER _ SERVICE ) Ġas ĠPower Manager ?) ĊĠĠĠĠĠĠĠ Ġwake Lock Ġ= Ġpower Manager ?. new Wake Lock ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPower Manager . AC Q UIRE _ CA USE S _ WAKE UP Ġor ĠPower Manager . SCREEN _ DIM _ WAKE _ LOCK , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" TAG :") ĊĠĠĠĠĠĠĠ Ġwake Lock ?. acquire () ĊĊĠĠĠĠĠĠĠ Ġinit Binding () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ ĠCore Service . start Service ( this , ĠCore Service . INT ENT _ FLOAT ING _ B ALL _ HIDE ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Channel Utils . is Mi Reader ( this )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Broadcast ( Constants . MI _ READ ER _ BRO ADCAST _ FORCE _ REFRESH ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ ĠCore Service . start Service ( this , ĠCore Service . INT ENT _ FLOAT ING _ B ALL ) ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġwake Lock ?. release () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Binding () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . view Presenter Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . fragment _ layout , ĠSimple Time Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . main _ layout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ- Ġclick Time Ġ< ĠDOUBLE _ CLICK _ TIME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks ( toast Runnable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( toast Runnable , ĠTO AST _ DELAY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDOUBLE _ CLICK _ TIME Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTO AST _ DELAY Ġ= Ġ( DOUBLE _ CLICK _ TIME Ġ+ Ġ 1 0 0 ). to Long () ĊĠĠĠ Ġ} Ċ }