package Ġcom . example . m iz u ho . natur er em ow idget kotlin Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġkotlinx . android . synt hetic . main . activity _ ir _ widget _ setting .* Ċ import Ġandroid . widget . Spinner Ċ import Ġcom . be ust . kl ax on .* Ċ import Ġjava . lang . Exception ĊĊ Ċ class ĠIR Widget Setting Ġ: ĠBase Setting () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" T _ SW _ SETTING " ĊĠĠĠ Ġprivate Ġvar Ġapp Widget Id Ġ Ġ= ĠApp Widget Manager . INVALID _ APP WIDGET _ ID ĊĠĠĠ Ġprivate Ġval ĠREQUEST _ CODE Ġ= Ġ 1 0 1 Ġ// Ġ ãĥª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ ãĤ³ãĥ¼ãĥī ï¼Ī åĳ¼ ãģ³ åĩº ãģĹ Activity èŃ ĺ åĪ¥ çĶ¨ ï¼ī ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ ir _ widget _ setting ) ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġapp Widget Id ĠãĤĴ åıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġapp Widget Id Ġ= Ġget Widget Id ( intent ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" IR Widget Setting Ġs pp Widget Id Ġ$ app Widget Id ") ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġspinner Ġ ãģªãģ© ĠView Ġãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® è¨Ńå®ļ ĊĠĠĠ Ġprivate Ġfun Ġset Button () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠOK ãĥľ ãĤ¿ ãĥ³ ãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠ Ġbutton . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Icons ĠĠ Ġ= ĠarrayOf ("", Ġ"", Ġ"", Ġ"") ĠĠ Ġ// ĠãĤ ¦ ãĤ£ ãĤ¸ãĤ§ ãĥĥãĥĪ ãģ® ãĥľ ãĤ¿ ãĥ³ ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® åĲįåīį ãĤĴ ä¿ĿåŃĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Signals Ġ= ĠarrayOf ("", Ġ"", Ġ"", Ġ"") ĠĠ Ġ// ĠãĤ ¦ ãĤ£ ãĤ¸ãĤ§ ãĥĥãĥĪ ãģ® ãĥľ ãĤ¿ ãĥ³ ãģ® ä¿¡åı· ãģ® id ãĤĴ ä¿ĿåŃĺ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ ¦ ãĤ£ ãĤ¸ãĤ§ ãĥĥãĥĪ ãģ« è¨Ńå®ļ ãģĻãĤĭ ãĥĩ ãĥĲãĤ¤ ãĤ¹ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãĢģ åĲįåīį ãģ® æĥħåł± ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdev Icon Adapter Ġ= Ġdev Icon Spinner . adapter Ġas ĠKey Value Image Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdev Position ĠĠĠ Ġ= Ġdev Icon Spinner . selected Item Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdev Icon Ġ= Ġdev Icon Adapter . getKey ( dev Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdev Name Ġ= Ġdev Icon . split ("_ ")[ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¨Ńå®ļ ãģĻãĤĭ ãĥľ ãĤ¿ ãĥ³ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® ãĥķãĤ¡ãĤ¤ãĥ« åĲį ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Icon Spinner Adapter Ġ= Ġicon _ spinner 0 . adapter Ġas ĠKey Value Image Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Icon Spinner Id Ġ= Ġresources . getIdentifier (" icon _ spinner $ i ", Ġ" id ", ĠpackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Icon Spinner ĠĠ Ġ= ĠfindViewById < Spinner >( btn Icon Spinner Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġbtn Icon Spinner . selected Item Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid ĠĠĠĠĠĠ Ġ= Ġbtn Icon Spinner Adapter . getKey ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Icons [ i ] Ġ= Ġid ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" i : Ġ$ i , Ġ Ġid : Ġ$ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¨Ńå®ļ ãģĻãĤĭ ãĥľ ãĤ¿ ãĥ³ ãģ® ä¿¡ ãģ® id åı· ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Signal Spinner Adapter Ġ= Ġsignal _ spinner 0 . adapter Ġas ĠKey Value Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Signal Spinner Id ĠĠĠĠĠ Ġ= Ġresources . getIdentifier (" signal _ spinner $ i ", Ġ" id ", ĠpackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Signal Spinner ĠĠĠĠĠĠĠ Ġ= ĠfindViewById < Spinner >( btn Signal Spinner Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġbtn Signal Spinner . selected Item Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġbtn Signal Spinner Adapter . getKey ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Signals [ i ] Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Info 0 Ġ= ĠButton Info ( button Icon = btn Icons [ 0 ], Ġsignal Id = btn Signals [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Info 1 Ġ= ĠButton Info ( button Icon = btn Icons [ 1 ], Ġsignal Id = btn Signals [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Info 2 Ġ= ĠButton Info ( button Icon = btn Icons [ 2 ], Ġsignal Id = btn Signals [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Info 3 Ġ= ĠButton Info ( button Icon = btn Icons [ 3 ], Ġsignal Id = btn Signals [ 3 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi R Widget Setting Data Ġ= ĠIR Widget Setting Data ( name = dev Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon = dev Icon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton 0 = button Info 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton 1 = button Info 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton 2 = button Info 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton 3 = button Info 3 Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġi R Widget Setting Data . toString ()) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¨Ńå®ļ æĥħåł± ãģ® ä¿ĿåŃĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile RW Ġ= ĠFile RW ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile RW . writeFile Message (" setting $ app Widget Id . txt ", Ġi R Widget Setting Data . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç¢ºèªį Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġfile RW . readFile (" setting $ app Widget Id . txt ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" save Ġdata : Ġ Ġ$ str ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparser : ĠParser Ġ= ĠParser . default () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ Ġ= ĠStringBuilder ( str ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Obj : ĠJsonObject Ġ= Ġparser . parse ( string Builder ) Ġas ĠJsonObject Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġjson Obj . toString ()) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ ¦ ãĤ£ ãĤ¸ãĤ§ ãĥĥãĥĪ ãģ® æĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠApp Widget Manager . getInstance ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIR Widget . update App Widget ( this , Ġmanager , Ġapp Widget Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çµĲæŀľ ãĤĴ ãĤ¦ ãĤ£ ãĤ¸ãĤ§ ãĥĥãĥĪ ãģ« è¿Ķ ãģĹ ãĢģ ãģĵãģ® è¨Ńå®ļ çĶ¨ ãĤ¢ãĤ¯ ãĥĨãĤ£ ãĥĵ ãĥĨãĤ£ ãĤĴ çµĤ äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Value Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Value . putExtra ( App Widget Manager . EXTRA _ APP WIDGET _ ID , Ġapp Widget Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġresult Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ è¨Ńå®ļ ãģ® èª¬æĺİ ãĤ¢ãĤ¯ ãĥĨãĤ£ ãĥĵ ãĥĨãĤ£ ãĤĴ éĸĭ ãģı ãĥľ ãĤ¿ ãĥ³ ãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠ Ġsetup Description Btn . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãĥĪ ãĥ¼ãĤ¯ ãĥ³ ãĥľ ãĤ¿ ãĥ³ ãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ IR Widget Setting , ĠSetup Description :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ãĥĪ ãĥ¼ãĤ¯ ãĥ³ ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ãĥľ ãĤ¿ ãĥ³ ãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠ ĠgetToken Btn . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠN ature ĠRem o Ġãģ® ãĥĪ ãĥ¼ãĤ¯ ãĥ³ è¨Ńå®ļ ãĥļãĥ¼ãĤ¸ ãĤĴ ãĤ¦ãĤ§ ãĥĸ ãĥĸãĥ© ãĤ¦ ãĤ¶ ãģ§ éĸĭ ãģı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse (" https :// home . nature . global /") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ãĥĪ ãĥ¼ãĤ¯ ãĥ³ ãĥľ ãĤ¿ ãĥ³ ãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠ Ġset Token Btn . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ IR Widget Setting , ĠSet Token :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġãĥĩ ãĥĲãĤ¤ ãĤ¹ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® Ġspinner Ġãģ® è¨Ńå®ļ ĊĠĠĠ Ġprivate Ġfun Ġset Device Icon Spinner () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ çĶ» åĥı ãĥªãĤ½ãĥ¼ãĤ¹ ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= ĠR . drawable :: class . java . fields ĊĠĠĠĠĠĠĠ Ġval Ġdev Icon Field List Ġ= Ġfields . filter { field Ġ-> Ġfield . name . startsWith (" device _ icon ")} Ġ// Ġãĥĩ ãĥĲãĤ¤ ãĤ¹ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® çĶ» åĥı ãģ® ãĥķãĤ£ ãĥ¼ãĥ« ãĥī ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġval Ġdev Icon List ĠĠĠĠĠ Ġ= Ġdev Icon Field List . map { field Ġ-> Ġfield . name } ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥĩ ãĥĲãĤ¤ ãĤ¹ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® çĶ» åĥı ãģ® ãĥķãĤ¡ãĤ¤ãĥ« åĲį ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġval Ġdev Icon Array ĠĠĠĠ Ġ= Ġdev Icon List . to Typed Array () ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠArray ãģ« å¤ī æıĽ ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥĩ ãĥĲãĤ¤ ãĤ¹ è¨Ńå®ļ çĶ¨ ãģ® Ġadapter Ġãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠ Ġval Ġdev Spinner Adapter Ġ= ĠKey Value Image Adapter ( this , ĠR . layout . spinner _ dev _ icon _ list , Ġdev Icon Array ) ĊĠĠĠĠĠĠĠ Ġdev Icon Spinner . adapter Ġ= Ġdev Spinner Adapter Ċ // ĠĠĠĠĠĠĠ Ġdev Icon Spinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener { Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// ãĢĢ ãĤ¢ ãĤ¤ ãĥĨ ãĥł ãģĮ éģ¸æĬŀ ãģķãĤĮãģŁ æĻĤ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" position : Ġ$ position , Ġid : Ġ$ id ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" getId (): Ġ${ dev Spinner Adapter . getKey ( position )} ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// ãĢĢ ãĤ¢ ãĤ¤ ãĥĨ ãĥł ãģĮ éģ¸æĬŀ ãģķãĤĮ ãģª ãģĭ ãģ£ãģŁ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{} Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® Ġspinner Ġãģ® è¨Ńå®ļ ĊĠĠĠ Ġprivate Ġfun Ġset Button Icon Spinner () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ çĶ» åĥı ãĥªãĤ½ãĥ¼ãĤ¹ ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= ĠR . drawable :: class . java . fields ĊĠĠĠĠĠĠĠ Ġval Ġbtn Icon Field List Ġ= Ġfields . filter { field Ġ-> Ġfield . name . startsWith (" button _ icon ")} Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® åĲįåīį ãģ® ãĥķãĤ£ ãĥ¼ãĥ« ãĥī ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġval Ġbtn Icon List ĠĠĠĠĠ Ġ= Ġbtn Icon Field List . map { field Ġ-> Ġfield . name } ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ åĲįåīį ãģ® ãĥķãĤ¡ãĤ¤ãĥ« åĲį ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġval Ġbtn Icon Array ĠĠĠĠ Ġ= Ġbtn Icon List . to Typed Array () ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠArray ãģ« å¤ī æıĽ ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® è¨Ńå®ļ çĶ¨ ãģ® Ġspinner Ġãģ® Ġadapter ĊĠĠĠĠĠĠĠ Ġval Ġbtn Icon Spinner Adapter Ġ= ĠKey Value Image Adapter ( this , ĠR . layout . spinner _ icon _ list , Ġbtn Icon Array ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ 4 ãģ¤ ãģ« è¨Ńå®ļ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® è¨Ńå®ļ çĶ¨ ãģ® Ġadapter Ġãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Icon Spinner Id ĠĠ Ġ= Ġresources . getIdentifier (" icon _ spinner $ i ", Ġ" id ", ĠpackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Icon Spinner ĠĠĠĠ Ġ= ĠfindViewById < Spinner >( btn Icon Spinner Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Icon Spinner . adapter Ġ= Ġbtn Icon Spinner Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® ä¿¡åı· ãģ® Ġspinner Ġãģ® è¨Ńå®ļ ĊĠĠĠ Ġprivate Ġfun Ġset Button Signal Spinner ( array : ĠArray < Pair < String , ĠString >>) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" set Button Signal Spinner ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® ä¿¡åı· ãģ® è¨Ńå®ļ çĶ¨ ãģ® Ġspinner Ġãģ® Ġadapter ĊĠĠĠĠĠĠĠ Ġval Ġbtn Signal Spinner Adapter Ġ= ĠKey Value Adapter ( this , Ġandroid . R . layout . simple _ spinner _ item , Ġarray ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ 4 ãģ¤ ãģ« è¨Ńå®ļ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® ä¿¡åı· ãģ® è¨Ńå®ļ çĶ¨ ãģ® Ġadapter Ġãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Signal Spinner Id Ġ= Ġresources . getIdentifier (" signal _ spinner $ i ", Ġ" id ", ĠpackageName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn Signal Spinner ĠĠĠĠĠĠ Ġ= ĠfindViewById < Spinner >( btn Signal Spinner Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Signal Spinner . adapter Ġ= Ġbtn Signal Spinner Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġjson ãģ® ãĥĳ ãĥ¼ãĤ¹ ĊĠĠĠ Ġ// Ġ ä¿¡åı· ãģ® Ġname , id ĠãĤĴ ãĥªãĤ¹ãĥĪ ãģ§ è¿Ķ ãģĻ ĊĠĠĠ Ġprivate Ġfun Ġparse Json ( str : ĠString ): ĠList < JsonObject > Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstr Ġ ãģĭãĤī Ġtype ĠãģĮ ĠIR Ġãģ§ ãģĤãĤĭ ãĤĤãģ® ãģ® ãģ¿ ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġir Json Arrays ĠĠ Ġ= Ġparse Json Devices ( str , Ġ" IR ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æľĢ çµĤ çļĦãģ« Ġreturn Ġ ãģĻãĤĭ éħį åĪĹ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä¿¡åı· ãģ® Ġname , Ġid ĠãĤĴ æł¼ ç´ į ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Signal Json List : ĠMutable List < JsonObject > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Signal Json List . add ( json Ġ{ Ġobj (" id " Ġto Ġ"", Ġ" nickname - name " Ġto ĠgetString ( R . string . not _ set )) Ġ}) Ġ// Ġ çĦ¡ åĬ¹ ãĥľ ãĤ¿ ãĥ³ çĶ¨ ãģ® éłħ çĽ® ãģ® è¿½åĬł ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġname , id ĠãĤĴ åıĸå¾Ĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( ir Json Ġin Ġir Json Arrays ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnickname Ġ= Ġir Json . string (" nickname ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignals Ġ Ġ= Ġir Json . array < JsonObject >(" signals ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¿ħè¦ģ ãģª ãĥĩãĥ¼ãĤ¿ ãģ® ãģ¿ åıĸå¾Ĺ ãģĹ æķ´ å½¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignal Json List Ġ= Ġsignals ?. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Ġ{ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id " Ġto Ġit . string (" id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" nickname - name " Ġto Ġ"$ nickname -${ it . string (" name ") }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġsignal Json List . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġall Signal Json List ãĢĢ ãģ« è¿½åĬł ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Json List ?. forEach Ġ{ Ġall Signal Json List . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" parse Json (): Ġ$ all Signal Json List ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġall Signal Json List ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠView Ġãģ® ãĤ³ãĥ³ ãĥĿ ãĥ¼ãĥ į ãĥ³ãĥĪ ãģ® æıı çĶ» ĊĠĠĠ Ġprivate Ġfun Ġupdate View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠN ature ĠRem o ĠãĤµ ãĥ¼ãĥĲãĥ¼ ãģĭãĤī ãģ® ãĥ¬ ãĤ¹ ãĥĿ ãĥ³ãĤ¹ ãĥĩãĥ¼ãĤ¿ ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġval Ġjson Str Ġ= Ġget Json Str () ĊĊĠĠĠĠĠĠĠ Ġ// Ġjson Ġãģ® ãĥĳ ãĥ¼ãĤ¹ ĊĠĠĠĠĠĠĠ Ġval Ġsignal Json Ġ= Ġparse Json ( json Str ) ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åħ¨ ãģ¦ ãģ® ãĥĩ ãĥĲãĤ¤ ãĤ¹ ãģ® ä¿¡åı· ãģ® æĥħåł± ãĤĴ ä¸Ģ ãģ¤ ãģ® ĠJson Ġãģ® ãĢĢ List Ġ ãģ¨ãģĹãģ¦ åıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġval Ġsignal List Ġ= Ġsignal Json . map Ġ{ ĠPair ( it . string (" id ") Ġ, Ġit . string (" nickname - name ")) Ġ} Ġ Ġ// ĠJson Ġãģ® ĠList ĠãĤĴ ĠPair Ġãģ® ĠList Ġãģ« å¤ī æıĽ ĊĠĠĠĠĠĠĠ Ġval Ġac Name List NotNull able Ġ= Ġsignal List . map Ġ{ Ġit . as Pair Of () Ġ} ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åŀĭ ãģ® å¤ī æıĽ ï¼Ī not Ġnullable Ġãģ« å¤ī æıĽ ï¼ī ĊĠĠĠĠĠĠĠ Ġval Ġsignal Array Ġ= Ġac Name List NotNull able . to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġif ( signal Array . isEmpty ()) Ġ{ Ġreturn Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġspinner Ġãģ® è¨Ńå®ļ ĊĠĠĠĠĠĠĠ Ġset Device Icon Spinner () ĊĠĠĠĠĠĠĠ Ġset Button Icon Spinner () ĊĠĠĠĠĠĠĠ Ġset Button Signal Spinner ( signal Array ) ĊĠĠĠĠĠĠĠ Ġset Button () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠSet Token Ġactivity Ġãģ® çµĲæŀľ ãĤĴ åıĹ ãģĳ åıĸ ãĤĬ ĠView Ġãģ® åĨį æıı çĶ» ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠActivity åģ ´ ãģ® on Activity Result ãģ§ åĳ¼ ãģ° ãģªãģĦ ãģ¨ Fragment ãģ® on Activity Result ãģĮ åĳ¼ ãģ° ãĤĮ ãģªãģĦ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĳ¼ ãģ³ åĩº ãģĹ åħĪ ãģ® Activity ãģĭãĤī çµĲæŀľ ãĤĴ åıĹ ãģĳ åıĸ ãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnature Ġremo ãģ® ãĤµ ãĥ¼ãĥĲ ãģĭãĤī ãĥª ãĥ¢ ãĤ³ãĥ³ ãģ® æĥħåł± ãĤĴåıĸå¾Ĺ ãģĹãģ¦ ãģĿãĤĮ ãĤī ãĤĴ éģ¸æĬŀ èĤ ¢ ãģ« è¿½åĬł ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" request Code : Ġ$ request Code , ĠresultCode : Ġ$ result Code ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }