package Ġcom . l zx . st arr ys ky . notification . utils Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . support . v 4 . graphics . Color Utils Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Remote Views Ċ import Ġandroid . widget . TextView Ċ import Ġcom . l zx . st arr ys ky . utils . Main Looper Ċ import Ġjava . util . concurrent . Count DownLatch Ċ Ċ /** Ċ Ġ* Ġ éĢļçŁ¥ æłı é¢ľèī² å·¥åħ· ç±» ï¼Į ä¸»è¦ģ æĺ¯ åĪ¤æĸŃ éĢļçŁ¥ æłı ä¸»é¢ĺ æĺ¯ çĻ½ èī² è¿ĺæĺ¯ é»ĳ èī² Ċ Ġ*/ Ċ class ĠNotification Color Utils Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġtitle View : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcontent View : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcolor Model : ĠNotification Color Model ? Ġ= Ġnull ĊĊĠĠĠ Ġfun ĠsetTitle TextColor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġremote View : ĠRemote Views , ĊĠĠĠĠĠĠĠ Ġview Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġnotification : ĠNotification ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( color Model Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Dark Notification Bar ( context , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcolor Model ?. config Title Color () ĊĠĠĠĠĠĠĠ Ġcolor Model ?. title Color ?. let Ġ{ Ġremote View . setTextColor ( view Id , Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Content TextColor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġremote View : ĠRemote Views , ĊĠĠĠĠĠĠĠ Ġview Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġnotification : ĠNotification ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( color Model Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Dark Notification Bar ( context , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcolor Model ?. config Content Color () ĊĠĠĠĠĠĠĠ Ġcolor Model ?. content Color ?. let Ġ{ Ġremote View . setTextColor ( view Id , Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġis Dark Notification Bar ( context : ĠContext , Ġnotification : ĠNotification ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( color Model Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Model Ġ= ĠNotification Color Model () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠisIn MainThread Ġ= ĠMain Looper . instance . isIn MainThread () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount DownLatch : ĠCount DownLatch ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isIn MainThread ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount DownLatch Ġ= ĠCount DownLatch ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal Count DownLatch Ġ= Ġcount DownLatch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrunnable Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotice TextColor Ġ= Ġget Notification Color ( context , Ġnotification ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notice TextColor Ġ== ĠCOLOR _ UN DEF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Model ?. default Config () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Dark Ġ= ĠColor Utils . calculate L uminance ( notice TextColor ) Ġ> Ġ 0 . 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Model ?. is Dark Notification Bg Ġ= Ġis Dark ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( var 3 : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar 3 . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Model ?. default Config () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Model ?. config Title Color () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Model ?. config Content Color () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Count DownLatch ?. count Down () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isIn MainThread ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunnable . run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Looper . instance . run On Ui Thread ( run nable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount DownLatch ?. await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( var 6 : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar 6 . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcolor Model ?. is Dark Notification Bg Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Notification Color ( context : ĠContext , Ġnotification : ĠNotification ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= ĠLinearLayout ( context ) ĊĠĠĠĠĠĠĠ Ġlayout . layout Params Ġ= ĠLinearLayout . LayoutParams (- 2 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġview Group Ġ= Ġnotification ?. content View ?. apply ( context , Ġlayout ) Ġas ĠViewGroup ĊĠĠĠĠĠĠĠ Ġget TextView ( view Group , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtitle View ?. let Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġit . current TextColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Model ?. title Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Model ?. content Color Ġ= Ġit . current TextColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcolor ĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠCOLOR _ UN DEF ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget TextView ( view Group : ĠViewGroup ?, ĠisSet TextColor : ĠBoolean ): ĠTextView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Group Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġview Group . child Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġview Group . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isSet TextColor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view . text Ġ== ĠNOT IFICATION _ TITLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle View Ġ= Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view . text Ġ== ĠNOT IFICATION _ CONTENT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View Ġ= Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle View Ġ= Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View Ġ= Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( view Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget TextView ( view , ĠisSet TextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Dark ( not i TextColor : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠColor Utils . calculate L uminance ( not i TextColor ) Ġ< Ġ 0 . 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis TextColor Similar ( base Color : ĠInt , Ġcolor : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsimple Base Color Ġ= Ġbase Color Ġor Ġ- 1 6 7 7 7 2 1 6 ĊĠĠĠĠĠĠĠ Ġval Ġsimple Color Ġ= Ġcolor Ġor Ġ- 1 6 7 7 7 2 1 6 ĊĠĠĠĠĠĠĠ Ġval Ġbase Red Ġ= ĠColor . red ( simple Base Color ) Ġ- ĠColor . red ( simple Color ) ĊĠĠĠĠĠĠĠ Ġval Ġbase Green Ġ= ĠColor . green ( simple Base Color ) Ġ- ĠColor . green ( simple Color ) ĊĠĠĠĠĠĠĠ Ġval Ġbase Blue Ġ= ĠColor . blue ( simple Base Color ) Ġ- ĠColor . blue ( simple Color ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMath . sqrt (( base Red Ġ* Ġbase Red Ġ+ Ġbase Green Ġ* Ġbase Green Ġ+ Ġbase Blue Ġ* Ġbase Blue ). toDouble ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue Ġ< Ġ 1 8 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠNotification Color Model Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtitle Color : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcontent Color : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġis Dark Notification Bg : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . title Color Ġ= ĠCOLOR _ UN DEF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . content Color Ġ= ĠCOLOR _ UN DEF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Dark Notification Bg Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdefault Config () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Color Ġ= ĠCOLOR _ UN DEF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= ĠCOLOR _ UN DEF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Dark Notification Bg Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġconfig Title Color () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( title Color Ġ== ĠCOLOR _ UN DEF Ġ&& ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 2 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Color Ġ= Ġif Ġ( is Dark Notification Bg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT CONTENT _ TITLE _ COLOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNOT IFICATION _ TITLE _ COLOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġconfig Content Color () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content Color Ġ== ĠCOLOR _ UN DEF Ġ&& ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 2 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= Ġif Ġ( is Dark Notification Bg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT CONTENT _ COLOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNOT IFICATION _ LINE 2 _ COLOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNOT IFICATION _ TITLE Ġ= Ġ" notification _ music _ title " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNOT IFICATION _ CONTENT Ġ= Ġ" notification _ music _ content " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCOLOR _ UN DEF Ġ= Ġ 9 8 7 6 5 4 3 2 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCOLOR _ THRESHOLD Ġ= Ġ 1 8 0 . 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠNOT IFICATION _ TITLE _ COLOR Ġ= ĠColor . parse Color ("# de 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠNOT IFICATION _ LINE 2 _ COLOR Ġ= ĠColor . parse Color ("# 8 a 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEVENT CONTENT _ TITLE _ COLOR Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠEVENT CONTENT _ COLOR Ġ= ĠColor . parse Color ("# b 3 ffffff ") ĊĠĠĠ Ġ} Ċ } Ċ