package Ġjp . tak ke . cp ust ats Ċ Ċ import Ġandroid . app . Key guard Manager Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . support . annotation . Requires Api Ċ import Ġandroid . support . v 4 . app . Notification Compat Ċ Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ internal Ġclass ĠNotification Presenter /* package */ ( service : ĠService , Ġprivate Ġval Ġm Config : ĠMy Config ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Service Ref : ĠWeak Reference < Service > Ġ= ĠWeak Reference ( service ) ĊĊĠĠĠ Ġ// Ġ éĢļçŁ¥ æĻĤ åĪ» [ ms ] ĊĠĠĠ Ġprivate Ġvar Ġm Notification Time : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġ// Ġ éĢļçŁ¥ æĻĤ åĪ» ãģ® éĿŀ æĽ´æĸ° æĻĤ åĪ» ( ãģĵãģ® æĻĤéĸĵ ãģ« ãģªãĤĭ ãģ¾ãģ§ æĽ´æĸ° ãģĹãģªãģĦ ãĢĤ ãĤ¹ ãĥª ãĥ¼ãĥĹ å¾ © å¸ ° æĻĤ ãģ«ãģ¯ ãģĻ ãģ Ĳ ãģ« æĽ´æĸ° ãģĻãĤĭãģ¨ ãĤ¹ãĥĨ ãĥ¼ãĤ¿ ãĤ¹ ãĥĲ ãĥ¼ãģ® éłĨ åºı ãģĮ ãģļ ãĤĮ ãģ¦ ãģĨ ãģ ĸ ãģĦ ãģ®ãģ§ )[ ms ] ĊĠĠĠ Ġvar Ġm Notification Time Keep : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ãĤ¹ãĥĨ ãĥ¼ãĤ¿ ãĤ¹ ãĥĲ ãĥ¼ éĢļçŁ¥ ãģ® è¨Ńå®ļ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Notifications ( cpu Usage s : ĠInt Array ?, Ġcurrent Cpu Clock : ĠInt , Ġmin Freq : ĠInt , Ġmax Freq : ĠInt , Ġrequest Foreground : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġm Service Ref . get () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠN åĪĨ ãģĬ ãģį ãģ« éĢļçŁ¥ æĻĤ åĪ» ãĤĴ æĽ´æĸ° ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġif Ġ( now Ġ> Ġm Notification Time Ġ+ Ġ 3 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 Ġ&& Ġnow Ġ> Ġm Notification Time Keep ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Notification Time Ġ= Ġnow ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnm Ġ= Ġservice . getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĊĠĠĠĠĠĠĠ Ġ// Ġ éĢļçŁ¥ ãĤ¦ ãĤ¤ãĥ³ ãĥī ãĤ¦ ãĤĴ ãĤ¯ãĥªãĥĥãĤ¯ ãģĹãģŁ éļ Ľ ãģ« èµ· åĭķ ãģĻãĤĭ ãĤ¤ãĥ³ ãĥĨ ãĥ³ãĥĪ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( service , ĠPreview Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . getActivity ( service , Ġ 0 , Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ CANCEL _ CURRENT ) ĊĊĠĠĠĠĠĠĠ Ġ// ------------------------------------------------ -- ĊĠĠĠĠĠĠĠ Ġ// ĠCPU ä½¿çĶ¨ çİĩ éĢļçŁ¥ ĊĠĠĠĠĠĠĠ Ġ// ------------------------------------------------ -- ĊĠĠĠĠĠĠĠ Ġif Ġ( cpu Usage s Ġ!= Ġnull Ġ&& Ġm Config . show Usage Notification ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcpu Usage s ãĤĴ åĲĦ éĢļçŁ¥ ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® ãĥĩãĥ¼ãĤ¿ ãģ« æĮ ¯ ãĤĬ åĪĨ ãģĳãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠC pu Notification Data Distribut or . distribute Notification Data ( cpu Usage s , Ġm Config . core Distribution Mode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( My Log . debug Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdump Cpu Usage s For Debug ( cpu Usage s , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAndroid ĠO Ġ( 8 . 0 ) Ġä»¥ éĻį ãģ§ãģ¯ éĢļçŁ¥ ãĥģ ãĥ£ ãĥ³ ãĥį ãĥ« ãģĮ å¿ħè¦ģ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Notification Channel ( service , ĠCHAN NEL _ ID _ CPU _ USAGE , Ġ" CPU ĠUsage ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNotification ( icon 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Notify ( MY _ USAGE _ NOTIFICATION _ ID 1 , Ġmake Usage Notification ( data [ 0 ], Ġpending Intent ). build (), Ġservice , Ġnm , Ġrequest Foreground ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnm . cancel ( MY _ USAGE _ NOTIFICATION _ ID 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNotification ( icon 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . size Ġ>= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Notify ( MY _ USAGE _ NOTIFICATION _ ID 2 , Ġmake Usage Notification ( data [ 1 ], Ġpending Intent ). build (), Ġservice , Ġnm , Ġrequest Foreground ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnm . cancel ( MY _ USAGE _ NOTIFICATION _ ID 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ------------------------------------------------ -- ĊĠĠĠĠĠĠĠ Ġ// Ġ åĳ¨ æ³¢ æķ° éĢļçŁ¥ ĊĠĠĠĠĠĠĠ Ġ// ------------------------------------------------ -- ĊĠĠĠĠĠĠĠ Ġif Ġ( current Cpu Clock Ġ> Ġ 0 Ġ&& Ġm Config . show Frequency Notification ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAndroid ĠO Ġ( 8 . 0 ) Ġä»¥ éĻį ãģ§ãģ¯ éĢļçŁ¥ ãĥģ ãĥ£ ãĥ³ ãĥį ãĥ« ãģĮ å¿ħè¦ģ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Notification Channel ( service , ĠCHAN NEL _ ID _ CPU _ FREQ UENCY , Ġ" CPU ĠFrequency ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Notify ( MY _ FREQ _ NOTIFICATION _ ID , Ġmake Frequency Notification ( min Freq , Ġmax Freq , Ġcurrent Cpu Clock , Ġpending Intent ). build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice , Ġnm , Ġrequest Foreground ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} /* package */ ĊĊĠĠĠ Ġprivate Ġfun Ġdo Notify ( notification Id : ĠInt , Ġnotification : ĠNotification , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice : ĠService , Ġnm : ĠNotification Manager , Ġrequest Foreground : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Foreground ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . start Foreground ( notification Id , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnm . notify ( notification Id , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Notification Channel ( context : ĠContext , Ġchannel Id : ĠString , Ġchannel Name : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcontext . getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( manager . get Notification Channel ( channelId ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Notification Channel ( manager , Ġchannel Id , Ġchannel Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* package */ ĠĠ Ġfun Ġcancel Notifications () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġm Service Ref . get () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġnm Ġ= Ġcontext . getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Config . show Usage Notification ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnm . cancel ( MY _ USAGE _ NOTIFICATION _ ID 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnm . cancel ( MY _ USAGE _ NOTIFICATION _ ID 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Config . show Frequency Notification ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnm . cancel ( MY _ FREQ _ NOTIFICATION _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Usage Notification ( data : ĠC pu Notification Data , Ġpending Intent : ĠPending Intent ): ĠNotification Compat . Builder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification Title 0 Ġ= Ġ" CPU ĠUsage " ĊĊĠĠĠĠĠĠĠ Ġval Ġcpu Usage s Ġ= Ġdata . cpu Usage s ĊĠĠĠĠĠĠĠ Ġval Ġicon Id Ġ= ĠResource Util . get Icon Id For Cpu Usage ( cpu Usage s ) ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġm Service Ref . get () ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( context !! , ĠCHAN NEL _ ID _ CPU _ USAGE ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Small Icon ( icon Id ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Ticker ( notification Title 0 ) ĊĠĠĠĠĠĠĠ Ġbuilder . set When ( m Notification Time ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġæ ¶ Ī ãģĪ ãģªãģĦ ãĤĪãģĨãģ« ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġbuilder . set O ngo ing ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠL ol lip op : ãĥŃ ãĥĥãĤ¯ ãĤ¹ãĤ¯ãĥª ãĥ¼ãĥ³ ãģ«ãģ¯ è¡¨ç¤º ãģĹãģªãģĦ ĊĠĠĠĠĠĠĠ Ġset Priority ForKey guard On L ol lip op ( builder ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ éĢļçŁ¥ æĸĩåŃĹåĪĹ ãģ® çĶŁæĪĲ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( 1 2 8 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ åĲĦ ãĤ³ ãĤ¢ åĪĨ ĊĠĠĠĠĠĠĠ Ġif Ġ( cpu Usage s Ġ!= Ġnull Ġ&& Ġcpu Usage s . size Ġ>= Ġ 3 ) Ġ{ ĠĠĠ Ġ// Ġ 2 ãĤ³ ãĤ¢ ãģ® åł´åĲĪ length = 3 ãģ« ãģªãĤĭ ãģ®ãģ§ ãĢĤ Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" Co res : Ġ"); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" Core "). append ( data . core No Start ). append ("- Core "). append ( data . core No End ). append (": Ġ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġcpu Usage s . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ>= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( cpu Usage s [ i ]). append ("% ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnotification Content Ġ= Ġsb . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( My Log . debug Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . d ("- Ġ$ notification Content ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification Title Ġ= Ġnotification Title 0 Ġ+ Ġ" Ġ" Ġ+ Ġcpu Usage s ! ![ 0 ] Ġ+ Ġ"% " ĊĠĠĠĠĠĠĠ Ġbuilder . setContent Title ( notification Title ) ĊĠĠĠĠĠĠĠ Ġbuilder . setContent Text ( notification Content ) ĊĠĠĠĠĠĠĠ Ġbuilder . setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġãĥ Ń ãĥĥãĤ¯ ãĤ¹ãĤ¯ãĥª ãĥ¼ãĥ³ ãģ§ ãģĤ ãĤĮãģ° éĿŀ è¡¨ç¤º ãģ« ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Priority ForKey guard On L ol lip op ( builder : ĠNotification Compat . Builder ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġkm Ġ= Ġm Service Ref . get () !!. getSystem Service ( Context . KEY GU ARD _ SERVICE ) Ġas ĠKey guard Manager ĊĠĠĠĠĠĠĠ Ġif Ġ( km . in Key guard Restricted Input Mode ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . d (" set Ġnotification Ġpriority : Ġmin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . priority Ġ= ĠNotification . PRIORITY _ MIN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Frequency Notification ( min Freq : ĠInt , Ġmax Freq : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Cpu Clock : ĠInt , Ġpending Intent : ĠPending Intent ): ĠNotification Compat . Builder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġ éĢļçŁ¥ ãĤ¦ ãĤ¤ãĥ³ ãĥī ãĤ¦ ãģ® ãĥ¡ ãĥĥãĤ»ãĥ¼ãĤ¸ ĊĠĠĠĠĠĠĠ Ġval Ġnotification Title 0 Ġ= Ġ" CPU ĠFrequency " ĊĊĠĠĠĠĠĠĠ Ġ// ĠNotification . Builder Ġãģ¯ ĠAPI ĠLevel 1 1 Ġä»¥ éĻį ãģĭãĤī ãģª ãģ®ãģ§ æĹ§ æĸ¹å¼ı ãģ§ ä½ľæĪĲ ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġval Ġicon Id Ġ= ĠResource Util . get Icon Id For Cpu Freq ( current Cpu Clock ) ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( m Service Ref . get () !! , ĠCHAN NEL _ ID _ CPU _ FREQ UENCY ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Small Icon ( icon Id ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Ticker ( notification Title 0 ) ĊĠĠĠĠĠĠĠ Ġbuilder . set When ( m Notification Time ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġæ ¶ Ī ãģĪ ãģªãģĦ ãĤĪãģĨãģ« ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġbuilder . set O ngo ing ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠL ol lip op : ãĥŃ ãĥĥãĤ¯ ãĤ¹ãĤ¯ãĥª ãĥ¼ãĥ³ ãģ«ãģ¯ è¡¨ç¤º ãģĹãģªãģĦ ĊĠĠĠĠĠĠĠ Ġset Priority ForKey guard On L ol lip op ( builder ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ éĢļçŁ¥ æĸĩåŃĹåĪĹ ãģ® çĶŁæĪĲ ĊĠĠĠĠĠĠĠ Ġval Ġnotification Title Ġ= Ġ" CPU ĠFrequency Ġ" Ġ+ ĠMy Util . format Freq ( current Cpu Clock ) ĊĠĠĠĠĠĠĠ Ġval Ġnotification Content Ġ= Ġ" Max ĠF req Ġ" Ġ+ ĠMy Util . format Freq ( max Freq ) Ġ+ Ġ" ĠMin ĠF req Ġ" Ġ+ ĠMy Util . format Freq ( min Freq ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . setContent Title ( notification Title ) ĊĠĠĠĠĠĠĠ Ġbuilder . setContent Text ( notification Content ) ĊĠĠĠĠĠĠĠ Ġbuilder . setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġ éĢļçŁ¥ ãģ® ID ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMY _ USAGE _ NOTIFICATION _ ID 1 Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMY _ USAGE _ NOTIFICATION _ ID 2 Ġ= Ġ 1 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMY _ FREQ _ NOTIFICATION _ ID Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCHAN NEL _ ID _ CPU _ USAGE Ġ= Ġ" CPU ĠUsage " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCHAN NEL _ ID _ CPU _ FREQ UENCY Ġ= Ġ" CPU ĠFrequency " ĊĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate Notification Channel ( manager : ĠNotification Manager , Ġchannel Id : ĠString , Ġchannel Name : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥ ¦ãĥ¼ãĤ¶ ãģĮ ãĢĮ è¨Ńå®ļ ãĢį ãĤ¢ãĥĹãĥª ãģ§ è¦ĭ ãĤĭ ãģĵãģ¨ ãģ« ãģªãĤĭ ãĥģ ãĥ£ ãĥ³ ãĥį ãĥ« åĲį ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager . IMPORT ANCE _ LOW ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . enable Lights ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . enable V ibration ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . set Sound ( null , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . lock screen Visibility Ġ= ĠNotification . VIS IBILITY _ PRIVATE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . create Notification Channel ( channel ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdump Cpu Usage s For Debug ( cpu Usage s : ĠInt Array , Ġdata : ĠArray < Cpu Notification Data >) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" org : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cpu Usage Ġin Ġcpu Usage s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( cpu Usage ). append ("% Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ("\ n usage 1 : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ 0 ]. cpu Usage s ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( it ). append ("% Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ("\ n usage 2 : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ 1 ]. cpu Usage s ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( it ). append ("% Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . d ( sb . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ