package Ġjp . tak ke . cp ust ats Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Service Connection Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . os . Remote Exception Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . text . style . Relative Size Span Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠPreview Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// Ġè¡¨ç¤º ç¢ºèªį ĊĠĠĠ Ġprivate Ġvar Ġm Is Foreground Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ å®Łè¡Į ãĥķ ãĥ© ãĤ° ( ãĥ¡ ãĥĭ ãĥ¥ ãĥ¼ åĪĩ ãĤĬ æĽ¿ ãģĪ çĶ¨ ãĢĤ ãĤ³ ãĥ¼ãĥ« ãĥĲ ãĥĥãĤ¯ ãģĮãģĤ ãĤĮãģ° å®Łè¡Į ä¸Ń ãģ¨ åĪ¤ å®ļ ãģĻãĤĭ ) ĊĠĠĠ Ġprivate Ġvar Ġm Service Maybe Running Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ ãģ® IF ĊĠĠĠ Ġprivate Ġvar Ġm Service If : ĠI Usage Update Service ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġm Config Activity Launcher Ġ= Ġregister For Activity Result ( Activity Result Contracts . Start Activity For Result ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ è¨Ńå®ļ å®Į äºĨ ĊĊĠĠĠĠĠĠĠ Ġ// Ġ è¨Ńå®ļ å¤īæĽ´ ãģ® åĨħå®¹ ãĤĴ ãĤµãĥ¼ãĥĵãĤ¹ ãģ« åıį æĺł ãģķ ãģĽ ãĤĭ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Service If Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¨Ńå®ļ ãģ® ãĥª ãĥŃ ãĥ¼ãĥī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . d (" request Ġreload Settings ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Service If !!. reload Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRemoteException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . w (" cannot Ġreload Settings Ġ( no Ġservice Ġi . f .) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æİ¥ç¶ļ å¾Į ãģ« åĨį ãĥŃ ãĥ¼ãĥī ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠãĤ³ ãĥ¼ãĥ« ãĥĲ ãĥĥãĤ¯ IF ãģ® å®Ł è£ħ ĊĠĠĠ Ġprivate Ġval Ġm Callback Ġ= Ġobject Ġ: ĠI Usage Update Callback . Stub () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠãĤµ ãĥ¼ãĥĵãĤ¹ ãģĭãĤī ãģ® éĢļçŁ¥ åıĹ ä¿¡ ãĥ¡ ãĤ½ãĥĥãĥī ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Remote Exception :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate Usage ( cpu Usage s : ĠInt Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfreq s : ĠInt Array , Ġmin Freq s : ĠInt Array , Ġmax Freq s : ĠInt Array ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ å®Łè¡Į ä¸Ń ãĥķ ãĥ© ãĤ° ãĤĴ ç«ĭ ãģ¦ ãģ¦ ãģĬ ãģı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Service Maybe Running Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Is Foreground ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCPU ãĤ¯ ãĥŃ ãĥĥãĤ¯ åĳ¨ æ³¢ æķ° è¡¨ç¤º ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Cpu Frequency ( freq s , Ġmin Freq s , Ġmax Freq s ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCPU ä½¿çĶ¨ çİĩ è¡¨ç¤º æĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Cpu Usage s ( cpu Usage s , Ġfreq s , Ġmin Freq s , Ġmax Freq s ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( getString ( R . string . app _ name ) Ġ+ Ġ" Ġ ĠF req : Ġ" Ġ+ ĠMy Util . format Freq ( current Freq ) Ġ+ Ġ""); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ ãģ® ãĤ³ ãĥį ãĤ¯ ãĤ·ãĥ§ãĥ³ ĊĠĠĠ Ġprivate Ġval Ġm Service Connection Ġ= Ġobject Ġ: ĠService Connection Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Service Connected ( name : ĠComponent Name , Ġservice : ĠI Binder ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . i (" Preview Activity . on Service Connected ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ ãģ® ãĤ¤ãĥ³ ãĤ¿ ãĥ¼ãĥ ķ ãĤ§ ãĥ¼ãĤ¹ ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Service If Ġ= ĠI Usage Update Service . Stub . as Interface ( service ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ³ ãĥ¼ãĥ« ãĥĲ ãĥĥãĤ¯ çĻ»éĮ² ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Service If ?. register Callback ( m Callback ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġon Activity Result Ġ å¾Į ãģ« è¨Ńå®ļ ãģĮ ãĥŃ ãĥ¼ãĥī ãģķãĤĮ ãģ¦ãģĦ ãģªãģĦ ãģĭ ãĤĤ ãģĹ ãĤĮ ãģªãģĦ ãģ®ãģ§ ãģĵ ãģĵ ãģ§ å¼ · åĪ¶ åĨį ãĥŃ ãĥ¼ãĥī ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Service If ?. reload Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRemoteException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Service Disconnected ( name : ĠComponent Name ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . i (" Preview Activity . on Service Disconnected ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Service If Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ preview ) ĊĊĠĠĠĠĠĠĠ ĠMy Log . d (" Preview Activity . onCreate ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġãģ¨ ãĤĬ ãģĤ ãģĪ ãģļ åħ¨ æ¶Ī åİ» ĊĠĠĠĠĠĠĠ Ġhide All Core Freq Info () ĊĊĠĠĠĠĠĠĠ Ġ// ĠCPU Ġ ãĤ¯ ãĥŃ ãĥĥãĤ¯ æĽ´æĸ° ĊĠĠĠĠĠĠĠ Ġval Ġcore Count Ġ= ĠC pu Info Collector . calc Cpu Core Count () ĊĠĠĠĠĠĠĠ Ġval Ġfi Ġ= ĠAll Core Frequency Info ( core Count ) ĊĠĠĠĠĠĠĠ Ġshow Cpu Frequency ( fi . freq s , Ġfi . min Freq s , Ġfi . max Freq s ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCPU ä½¿çĶ¨ çİĩ è¡¨ç¤º æĽ´æĸ° ĊĠĠĠĠĠĠĠ Ġval Ġdummy Cpu Usage s Ġ= ĠInt Array ( core Count ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdummy Cpu Usage s . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdummy Cpu Usage s [ i ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠC pu Info Collector . take All Core Freq s ( fi ) ĊĠĠĠĠĠĠĠ Ġ// ĠCPU åĳ¨ æ³¢ æķ° ãģĮ 1 0 0 % ãģ«ãģª ãģ£ãģ¦ ãģĹãģ¾ ãģĨ ãģ®ãģ§ æľĢ åĪĿ ãģ¯ ãĤ ¼ ãĥŃ ãģ« ãģĹãģ¦ ãģĬ ãģı ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( fi . min Freq s , Ġ 0 , Ġfi . freq s , Ġ 0 , Ġfi . freq s . size ) ĊĠĠĠĠĠĠĠ Ġshow Cpu Usage s ( dummy Cpu Usage s , Ġfi . freq s , Ġfi . min Freq s , Ġfi . max Freq s ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠToolbar åĪĿ æľŁ åĮĸ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( findViewById ( R . id . my _ toolbar )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠToolbar ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ å¤īæĽ´ ĊĠĠĠĠĠĠĠ Ġset ActionBar Logo ( R . drawable . single 0 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ éĸĭå§ĭ ĊĠĠĠĠĠĠĠ Ġdo Bind Service () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Bind Service () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ ãģ¸ãģ® ãĥĲ ãĤ¤ãĥ³ ãĥī éĸĭå§ĭ ĊĠĠĠĠĠĠĠ Ġval Ġservice Intent Ġ= ĠIntent ( this , ĠUsage Update Service :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġstart ĊĠĠĠĠĠĠĠ ĠMy Log . d (" Preview Activity : Ġstart Service Ġof ĠUsage Update Service ") ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Intent . putExtra (" FO REG ROUND _ REQUEST ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground Service ( service Intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Service ( service Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġbind ĊĠĠĠĠĠĠĠ Ġbind Service ( service Intent , Ġm Service Connection , ĠContext . BIND _ AUTO _ CREATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset ActionBar Logo ( icon Id : ĠInt ) Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġaction Bar Ġ= Ġsupport ActionBar Ċ // ĠĠĠĠĠĠĠ Ġaction Bar ?. set Logo ( icon Id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Toolbar ? >( R . id . my _ toolbar ) ĊĠĠĠĠĠĠĠ Ġtoolbar ?. set Navigation Icon ( icon Id ) Ċ // ĠĠĠĠĠĠĠ Ġtoolbar . set Logo ( icon Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide All Core Freq Info () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠCore ĊĠĠĠĠĠĠĠ Ġval Ġcores Ġ= Ġint ArrayOf ( R . id . core 1 , ĠR . id . core 2 , ĠR . id . core 3 , ĠR . id . core 4 , ĠR . id . core 5 , ĠR . id . core 6 , ĠR . id . core 7 , ĠR . id . core 8 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < View >( cores [ i ]). visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠF req ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . freq Image ). visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . freq Text 1 ). visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . activity _ preview , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ çĬ¶æħĭ ãģ«ãĤĪ ãģ£ãģ¦ menu å¤īæĽ´ ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġmenu . find Item ( R . id . menu _ start _ service ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isVisible Ġ= Ġ! m Service Maybe Running ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġmenu . find Item ( R . id . menu _ stop _ service ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isVisible Ġ= Ġm Service Maybe Running ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Prepare Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ start _ service Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ éĸĭå§ĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Service If Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . i (" Preview Activity : Ġstart ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¸¸ é § Ĳ éĸĭå§ĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Service If !!. start Res ident () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRemoteException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ stop _ service Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ åģľæŃ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Service If Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . i (" Preview Activity : Ġstop ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¸¸ é § Ĳ åģľæŃ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Service If !!. stop Res ident () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ å®Łè¡Į ä¸Ń ãĥķ ãĥ© ãĤ° ãĤĴ ä¸ĭ ãĤ į ãģĹãģ¦ ãģĬ ãģı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Service Maybe Running Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġè¡¨ç¤º åĪĿ æľŁ åĮĸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide All Core Freq Info () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ ¿ ãĤ¤ãĥĪ ãĥ« åĪĿ æľŁ åĮĸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" CPU ĠStats " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠToolbar ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ åĪĿ æľŁ åĮĸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ActionBar Logo ( R . drawable . single 0 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRemoteException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠConfig Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Config Activity Launcher . launch ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ about Ġ-> ĠstartActivity ( Intent ( this , ĠAbout Activity :: class . java )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ ex ut Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çµĤ äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠMy Log . d (" Preview Activity . on Destroy ") ĊĊĠĠĠĠĠĠĠ Ġcleanup Service Connection () ĊĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcleanup Service Connection () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤ³ ãĥ¼ãĥ« ãĥĲ ãĥĥãĤ¯ è§£ éĻ¤ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Service If Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Service If !!. unregister Callback ( m Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRemoteException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤµ ãĥ¼ãĥĵãĤ¹ ãģ® bind è§£ éĻ¤ ĊĠĠĠĠĠĠĠ Ġun bind Service ( m Service Connection ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠMy Log . d (" on Pause ") ĊĊĠĠĠĠĠĠĠ Ġm Is Foreground Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠMy Log . d (" on Resume ") ĊĊĠĠĠĠĠĠĠ Ġm Is Foreground Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCPU Ġ ãĤ¯ ãĥŃ ãĥĥãĤ¯ åĳ¨ æ³¢ æķ° ãĤĴ çĶ» éĿ¢ ãģ« è¡¨ç¤º ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġshow Cpu Frequency ( freq s : ĠInt Array , Ġmin Freq s : ĠInt Array , Ġmax Freq s : ĠInt Array ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åħ¨ ãĤ³ ãĤ¢ ãģ® ãģĨ ãģ¡ æľĢ éģ© ãģª ãĤ¯ ãĥŃ ãĥĥãĤ¯ åĳ¨ æ³¢ æķ° ãĤĴ æİ¢ ãģĻ ĊĠĠĠĠĠĠĠ Ġval Ġactive Core Index Ġ= ĠMy Util . getActive Core Index ( freq s ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Freq Ġ= Ġfreq s [ active Core Index ] ĊĠĠĠĠĠĠĠ Ġval Ġmin Freq Ġ= Ġmin Freq s [ active Core Index ] ĊĠĠĠĠĠĠĠ Ġval Ġmax Freq Ġ= Ġmax Freq s [ active Core Index ] ĊĊĠĠĠĠĠĠĠ Ġval ĠtextView 1 Ġ= ĠfindViewById < View >( R . id . freq Text 1 ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġs sb Ġ= ĠSp ann able StringBuilder () ĊĊĠĠĠĠĠĠĠ Ġs sb . append ( My Util . format Freq ( current Freq )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ãĤ¢ãĤ¯ ãĥĨãĤ£ ãĥĸ ãģª ãĤ³ ãĤ¢ çķª åı· ãģ¨ ( åĳ¨ æ³¢ æķ° ãģ«ãĤĪ ãĤĭ ) è² ł èį · ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġs sb . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclock Percent Ġ= ĠMy Util . get Clock Percent ( current Freq , Ġmin Freq , Ġmax Freq ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . append (" Ġ Ġ[ Core Ġ" Ġ+ Ġ( active Core Index Ġ+ Ġ 1 ) Ġ+ Ġ": Ġ" Ġ+ Ġclock Percent Ġ+ Ġ"% ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . set Span ( Relative Size Span ( 0 . 8 f ), Ġstart , Ġs sb . length , ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠ ĠMy Log . i (" Ġclock [" Ġ+ Ġcurrent Freq Ġ+ Ġ"] Ġ=> Ġ" Ġ+ Ġclock Percent Ġ+ Ġ"% "); ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åĳ¨ æ³¢ æķ° ãģ® Ġmin / max ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . append ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Freq Text Ġ= ĠMy Util . format Freq ( min Freq ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Freq Text Ġ= ĠMy Util . format Freq ( max Freq ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġs sb . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . append (" Ġ($ min Freq Text Ġ- Ġ$ max Freq Text )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . set Span ( Relative Size Span ( 0 . 8 f ), Ġstart , Ġs sb . length , ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠtextView 1 . text Ġ= Ġs sb ĊĠĠĠĠĠĠĠ ĠtextView 1 . visibility Ġ= ĠView . VISIBLE ĊĊĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠResource Util . get Icon Id For Cpu Freq ( current Freq ) ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠfindViewById < View >( R . id . freq Image ) Ġas ĠImageView ĊĠĠĠĠĠĠĠ ĠimageView . setImage Resource ( id ) ĊĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCPU Ġä½¿çĶ¨ çİĩ ãĤĴ çĶ» éĿ¢ ãģ« è¡¨ç¤º ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġshow Cpu Usage s ( cpu Usage s : ĠInt Array ?, Ġfreq s : ĠInt Array , Ġmin Freq s : ĠInt Array , Ġmax Freq s : ĠInt Array ) Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠ ĠMy Log . d (" Preview Activity . update Cpu Usage s "); ĊĊĠĠĠĠĠĠĠ Ġ// ĠToolbar ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ å¤īæĽ´ ĊĠĠĠĠĠĠĠ Ġif Ġ( cpu Usage s Ġ!= Ġnull Ġ&& Ġcpu Usage s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠResource Util . get Icon Id For Cpu Usage Single Color ( cpu Usage s [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ActionBar Logo ( id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ãĥĹ ãĥ¬ ãĥĵ ãĥ¥ ãĥ¼ çĶ» éĿ¢ ãģ« è¡¨ç¤º ĊĠĠĠĠĠĠĠ Ġval Ġcores Ġ= Ġint ArrayOf ( R . id . core 1 , ĠR . id . core 2 , ĠR . id . core 3 , ĠR . id . core 4 , ĠR . id . core 5 , ĠR . id . core 6 , ĠR . id . core 7 , ĠR . id . core 8 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcore Count Ġ= ĠC pu Info Collector . calc Cpu Core Count () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 7 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( core Count Ġ<= Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCore ãģĮ å°ĳ ãģªãģĦ ãģ®ãģ§ æ¶Ī åİ» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < View >( cores [ i ]). visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcore View Ġ= ĠfindViewById < View >( cores [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcore View . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcpu Usage Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cpu Usage s Ġ!= Ġnull Ġ&& Ġcpu Usage s . size Ġ> Ġi Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcpu Usage Ġ= Ġcpu Usage s [ i Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ------------------------------------------------ -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ¢ ãĤ¤ ãĤ³ãĥ³ è¨Ńå®ļ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ------------------------------------------------ -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠResource Util . get Icon Id For Cpu Usage Single Color ( cpu Usage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= Ġcore View . findViewById < View >( R . id . core Image ) Ġas ĠImageView ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Resource ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ------------------------------------------------ -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥ Ĩ ãĤŃ ãĤ¹ãĥĪ è¨Ńå®ļ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ------------------------------------------------ -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġcore View . findViewById < View >( R . id . core Text ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs sb Ġ= ĠSp ann able StringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . append (" Core " Ġ+ Ġ( i Ġ+ Ġ 1 ) Ġ+ Ġ": Ġ" Ġ+ Ġcpu Usage Ġ+ Ġ"% ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . i (" disp Ġcore [" Ġ+ Ġi Ġ+ Ġ"] Ġ= Ġ" Ġ+ Ġcpu Usage Ġ+ Ġ"% Ġ( max =" Ġ+ Ġmax Freq s [ i ] Ġ+ Ġ")"); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĳ¨ æ³¢ æķ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfreq Text Ġ= ĠMy Util . format Freq ( freq s [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . append ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . append (" Ġ$ freq Text ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĳ¨ æ³¢ æķ° ãģ«ãĤĪ ãĤĭ è² ł èį · ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclock Percent Ġ= ĠMy Util . get Clock Percent ( freq s [ i ], Ġmin Freq s [ i ], Ġmax Freq s [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġs sb . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . append (" Ġ[$ clock Percent % ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . set Span ( Relative Size Span ( 0 . 8 f ), Ġstart , Ġs sb . length , ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĳ¨ æ³¢ æķ° ãģ® Ġmin / max ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . append ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġs sb . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Freq Text Ġ= ĠMy Util . format Freq ( min Freq s [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Freq Text Ġ= ĠMy Util . format Freq ( max Freq s [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . append (" Ġ($ min Freq Text Ġ- Ġ$ max Freq Text )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . set Span ( Relative Size Span ( 0 . 8 f ), Ġstart , Ġs sb . length , ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġs sb ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãĤ¢ãĤ¯ ãĥĨãĤ£ ãĥĸ ãĤ³ ãĤ¢ ãģ® èĥĮæĻ¯ èī² ãĤĴ å¤ī ãģĪãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠResource Util . get BackgroundColor ( clock Percent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcore View . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ