package Ġcom . example . android ac Ċ import Ġandroid . app . Time Picker Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . pm . Activity Info Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . hardware . Consumer Ir Manager Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Time Picker Ċ import Ġjava . util . Arrays Ċ import Ġjava . util . Calendar Ċ class ĠMainActivity : AppCompatActivity () Ġ{ ĊĠ Ġprivate Ġval Ġir Manager : Consumer Ir Manager ĊĠ Ġ// Ġx Ġ 0 Ġ 0 Ġ 1 Ġ 0 Ġ 0 Ġ 0 Ġ 0 Ġ 1 Ġ 1 Ġ 0 Ġ 1 Ġ 0 Ġ 1 Ġ 0 Ġ 1 Ġ 0 Ġ 1 Ġ 1 Ġ 1 Ġ 1 ĊĠ Ġprotected Ġfun ĠonCreate ( savedInstanceState : Bundle ) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠ Ġval Ġconfig Ġ= Ġthis . getResources (). getConfiguration () ĊĠĠĠ Ġif Ġ( config . sm allest Screen Width Dp Ġ>= Ġ 6 0 0 ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠ Ġset Requested Orientation ( Activity Info . SCREEN _ OR IENTATION _ LAND SC APE ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse ĊĠĠĠ Ġ{ ĊĠĠĠĠĠ Ġset Requested Orientation ( Activity Info . SCREEN _ OR IENTATION _ POR TRA IT ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġshared Pref Ġ= Ġthis . get Preferences ( Context . MODE _ PRIVATE ) ĊĠĠĠ Ġpref Editor Ġ= Ġshared Pref . edit () ĊĠĠĠ Ġir Manager Ġ= Ġget System Service ( CON SUM ER _ IR _ SERVICE ) Ġas ĠConsumer Ir Manager ĊĠĠĠ Ġrestore _ data () ĊĠĠĠ Ġupdate _ view () ĊĠĠĠ ĠfindViewById ( R . id . power Button ). setOnClickListener ( object : View . OnClickListener () Ġ{ ĊĠĠĠĠĠ Ġfun ĠonClick ( view : View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpower Ġ= Ġ! power ĊĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Power ", Ġpower ) ĊĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ ĠfindViewById ( R . id . temp Up Button ). setOnClickListener ( object : View . OnClickListener () Ġ{ ĊĠĠĠĠĠ Ġfun ĠonClick ( view : View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemperature Ġ= ĠMath . min ( temperature Ġ+ Ġ 1 , ĠTEMP _ 1 6 Ġ+ Ġ 1 4 ) ĊĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Temperature ", Ġtemperature ) ĊĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ ĠfindViewById ( R . id . temp Down Button ). setOnClickListener ( object : View . OnClickListener () Ġ{ ĊĠĠĠĠĠ Ġfun ĠonClick ( view : View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemperature Ġ= ĠMath . max ( temperature Ġ- Ġ 1 , ĠTEMP _ 1 6 ) ĊĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Temperature ", Ġtemperature ) ĊĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ ĠfindViewById ( R . id . swing Button ). setOnClickListener ( object : View . OnClickListener () Ġ{ ĊĠĠĠĠĠ Ġfun ĠonClick ( view : View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsw ing Ġ= Ġ! swing ĊĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Swing ", Ġsw ing ) ĊĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ ĠfindViewById ( R . id . mode Button ). setOnClickListener ( object : View . OnClickListener () Ġ{ ĊĠĠĠĠĠ Ġfun ĠonClick ( view : View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmode Ġ= Ġ( mode Ġ+ Ġ 1 ) Ġ% Ġ 4 ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ== ĠMODE _ F AN Ġ&& Ġfan Ġ== ĠF AN _ AUTO ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġfan Ġ= Ġ( fan Ġ+ Ġ 1 ) Ġ% Ġ 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Mode ", Ġmode ) ĊĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ ĠfindViewById ( R . id . fan Button ). setOnClickListener ( object : View . OnClickListener () Ġ{ ĊĠĠĠĠĠ Ġfun ĠonClick ( view : View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfan Ġ= Ġ( fan Ġ+ Ġ 1 ) Ġ% Ġ 4 ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ== ĠMODE _ F AN Ġ&& Ġfan Ġ== ĠF AN _ AUTO ) ĊĠĠĠĠĠĠĠ Ġfan Ġ= Ġ( fan Ġ+ Ġ 1 ) Ġ% Ġ 4 ĊĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Fan ", Ġfan ) ĊĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ ĠfindViewById ( R . id . sleep Button ). setOnClickListener ( object : View . OnClickListener () Ġ{ ĊĠĠĠĠĠ Ġfun ĠonClick ( view : View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sleep ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġsleep Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠ Ġt sleep _ hours Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠ Ġt sleep _ t ens Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠ Ġt sleep _ pm Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Sleep ", Ġsleep ) ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Sleep Hour ", Ġt sleep _ hours ) ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Sleep T ens ", Ġt sleep _ t ens ) ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Sleep PM ", Ġt sleep _ pm ) ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠ Ġval Ġhour Ġ= ĠcurrentTime . get ( Calendar . HOUR _ OF _ DAY ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġminute Ġ= ĠcurrentTime . get ( Calendar . MINUTE ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġtime picker Ġ= ĠTime Picker Dialog ( this @ MainActivity , Ġobject : Time Picker Dialog . On Time Set Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Time Set ( time Picker : Time Picker , Ġh ou ro fd ay : Int , Ġselected minute : Int ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt sleep _ hours Ġ= Ġh ou ro fd ay Ġ% Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt sleep _ pm Ġ= Ġh ou ro fd ay Ġ>= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt sleep _ t ens Ġ= Ġselected minute Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Sleep ", Ġsleep ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Sleep Hour ", Ġt sleep _ hours ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Sleep T ens ", Ġt sleep _ t ens ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Sleep PM ", Ġt sleep _ pm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ}, Ġhour , Ġminute , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠ Ġtime picker . setTitle (" Select ĠSleep ĠTime ") ĊĠĠĠĠĠĠĠĠĠ Ġtime picker . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ ĠfindViewById ( R . id . wake Button ). setOnClickListener ( object : View . OnClickListener () Ġ{ ĊĠĠĠĠĠ Ġfun ĠonClick ( view : View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( wake ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwake Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠ Ġtw ake _ hours Ġ= Ġ 6 ĊĠĠĠĠĠĠĠĠĠ Ġtw ake _ t ens Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠ Ġtw ake _ pm Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Wake ", Ġwake ) ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Wake Hour ", Ġtw ake _ hours ) ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Wake T ens ", Ġtw ake _ t ens ) ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Wake PM ", Ġtw ake _ pm ) ĊĠĠĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠ Ġval Ġhour Ġ= ĠcurrentTime . get ( Calendar . HOUR _ OF _ DAY ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġminute Ġ= ĠcurrentTime . get ( Calendar . MINUTE ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġtime picker Ġ= ĠTime Picker Dialog ( this @ MainActivity , Ġobject : Time Picker Dialog . On Time Set Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Time Set ( time Picker : Time Picker , Ġh ou ro fd ay : Int , Ġselected minute : Int ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwake Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtw ake _ hours Ġ= Ġh ou ro fd ay Ġ% Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtw ake _ pm Ġ= Ġh ou ro fd ay Ġ>= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtw ake _ t ens Ġ= Ġselected minute Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate _ view () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Wake ", Ġwake ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Wake Hour ", Ġtw ake _ hours ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Int (" Wake T ens ", Ġtw ake _ t ens ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . put Boolean (" Wake PM ", Ġtw ake _ pm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Editor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ}, Ġhour , Ġminute , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠ Ġtime picker . setTitle (" Select ĠW ake Ġup ĠTime ") ĊĠĠĠĠĠĠĠĠĠ Ġtime picker . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ ĠfindViewById ( R . id . send Button ). setOnClickListener ( object : View . OnClickListener () Ġ{ ĊĠĠĠĠĠ Ġfun ĠonClick ( view : View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠ Ġ} ĊĠ Ġinternal Ġfun Ġupdate _ view () Ġ{ ĊĠĠĠ Ġ( findViewById ( R . id . power Text ) Ġas ĠTextView ). setText ( if Ġ( power ) Ġ" On " Ġelse Ġ" Off ") ĊĠĠĠ Ġ( findViewById ( R . id . temp r ature Text ) Ġas ĠTextView ). setText ( Integer . toString ( temperature Ġ+ Ġ( 1 6 Ġ- ĠTEMP _ 1 6 ))) ĊĠĠĠ Ġval Ġstate Ġ= Ġ" Col d " ĊĠĠĠ Ġwhen Ġ( mode ) Ġ{ ĊĠĠĠĠĠ ĠMODE _ COL D Ġ-> Ġstate Ġ= Ġ" Col d " ĊĠĠĠĠĠ ĠMODE _ HOT Ġ-> Ġstate Ġ= Ġ" Hot " ĊĠĠĠĠĠ ĠMODE _ DR Y Ġ-> Ġstate Ġ= Ġ" D ry " ĊĠĠĠĠĠ ĠMODE _ F AN Ġ-> Ġstate Ġ= Ġ" Fan " ĊĠĠĠ Ġ} ĊĠĠĠ Ġ( findViewById ( R . id . mode Text ) Ġas ĠTextView ). setText ( state ) ĊĠĠĠ Ġ( findViewById ( R . id . sw in Text ) Ġas ĠTextView ). setText ( if Ġ( swing ) Ġ" On " Ġelse Ġ" Off ") ĊĠĠĠ Ġwhen Ġ( fan ) Ġ{ ĊĠĠĠĠĠ ĠF AN _ AUTO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById ( R . id . fan Image ). setVisibility ( View . IN VISIBLE ) ĊĠĠĠĠĠĠĠ ĠfindViewById ( R . id . auto Text ). setVisibility ( View . VISIBLE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠF AN _ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById ( R . id . fan Image ). setVisibility ( View . VISIBLE ) ĊĠĠĠĠĠĠĠ ĠfindViewById ( R . id . auto Text ). setVisibility ( View . IN VISIBLE ) ĊĠĠĠĠĠĠĠ Ġ( findViewById ( R . id . fan Image ) Ġas ĠImageView ). setImage Resource ( R . drawable . fan 1 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠF AN _ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById ( R . id . fan Image ). setVisibility ( View . VISIBLE ) ĊĠĠĠĠĠĠĠ ĠfindViewById ( R . id . auto Text ). setVisibility ( View . IN VISIBLE ) ĊĠĠĠĠĠĠĠ Ġ( findViewById ( R . id . fan Image ) Ġas ĠImageView ). setImage Resource ( R . drawable . fan 2 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠF AN _ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById ( R . id . fan Image ). setVisibility ( View . VISIBLE ) ĊĠĠĠĠĠĠĠ ĠfindViewById ( R . id . auto Text ). setVisibility ( View . IN VISIBLE ) ĊĠĠĠĠĠĠĠ Ġ( findViewById ( R . id . fan Image ) Ġas ĠImageView ). setImage Resource ( R . drawable . fan 3 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( sleep ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠ Ġval Ġsleep Text Ġ= ĠfindViewById ( R . id . sleep Text ) ĊĠĠĠĠĠ Ġsleep Text . setVisibility ( View . VISIBLE ) ĊĠĠĠĠĠ Ġsleep Text . setText (" Sleep Ġat Ġ" Ġ+ ĠInteger . toString ( ts leep _ hours ) Ġ+ Ġ":" Ġ+ ĠInteger . toString ( ts leep _ t ens Ġ* Ġ 1 0 ) Ġ+ Ġ" Ġ" Ġ+ Ġ( if Ġ( ts leep _ pm ) Ġ" PM " Ġelse Ġ" AM ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse ĊĠĠĠ Ġ{ ĊĠĠĠĠĠ ĠfindViewById ( R . id . sleep Text ). setVisibility ( View . IN VISIBLE ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( wake ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠ Ġval Ġwake Text Ġ= ĠfindViewById ( R . id . wake Text ) ĊĠĠĠĠĠ Ġwake Text . setVisibility ( View . VISIBLE ) ĊĠĠĠĠĠ Ġwake Text . setText (" Wake Ġup Ġat Ġ" Ġ+ ĠInteger . toString ( tw ake _ hours ) Ġ+ Ġ":" Ġ+ ĠInteger . toString ( tw ake _ t ens Ġ* Ġ 1 0 ) Ġ+ Ġ" Ġ" Ġ+ Ġ( if Ġ( tw ake _ pm ) Ġ" PM " Ġelse Ġ" AM ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse ĊĠĠĠ Ġ{ ĊĠĠĠĠĠ ĠfindViewById ( R . id . wake Text ). setVisibility ( View . IN VISIBLE ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġinternal Ġfun Ġrestore _ data () Ġ{ ĊĠĠĠ Ġpower Ġ= Ġshared Pref . getBoolean (" Power ", Ġfalse ) ĊĠĠĠ Ġtemperature Ġ= Ġshared Pref . getInt (" Temperature ", ĠTEMP _ 1 6 Ġ+ Ġ 8 ) ĊĠĠĠ Ġfan Ġ= Ġshared Pref . getInt (" Fan ", ĠF AN _ 1 ) ĊĠĠĠ Ġmode Ġ= Ġshared Pref . getInt (" Mode ", ĠMODE _ COL D ) ĊĠĠĠ Ġsw ing Ġ= Ġshared Pref . getBoolean (" Swing ", Ġfalse ) ĊĠĠĠ Ġsleep Ġ= Ġshared Pref . getBoolean (" Sleep ", Ġfalse ) ĊĠĠĠ Ġwake Ġ= Ġshared Pref . getBoolean (" Wake ", Ġfalse ) ĊĠĠĠ Ġt sleep _ hours Ġ= Ġshared Pref . getInt (" Sleep Hour ", Ġ 1 0 ) ĊĠĠĠ Ġt sleep _ t ens Ġ= Ġshared Pref . getInt (" Sleep T ens ", Ġ 0 ) ĊĠĠĠ Ġt sleep _ pm Ġ= Ġshared Pref . getBoolean (" Sleep PM ", Ġtrue ) ĊĠĠĠ Ġtw ake _ hours Ġ= Ġshared Pref . getInt (" Wake Hour ", Ġ 6 ) ĊĠĠĠ Ġtw ake _ t ens Ġ= Ġshared Pref . getInt (" Wake T ens ", Ġ 0 ) ĊĠĠĠ Ġtw ake _ pm Ġ= Ġshared Pref . getBoolean (" Wake PM ", Ġfalse ) ĊĠ Ġ} ĊĠ Ġinternal Ġfun Ġsend () Ġ{ ĊĠĠĠ Ġset _ time () ĊĠĠĠ Ġset _ checksum () ĊĠĠĠ Ġupdate _ raw () ĊĠĠĠ ĠLog . d (" raw ", ĠArrays . toString ( raw )) ĊĠĠĠ Ġif Ġ( ir Manager . has Ir Emitter ()) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠ Ġir Manager . transmit ( 3 8 0 0 0 , Ġraw ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse ĊĠĠĠ Ġ{ ĊĠĠĠĠĠ ĠLog . e (" ir ", Ġ" No Ġir Ġem mit er Ġdetected ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġinternal Ġvar Ġtemperature : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġfan : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġmode : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġt now _ units : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġt now _ t ens : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġt now _ hours : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġchecksum : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġt sleep _ hours : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġt sleep _ t ens : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġtw ake _ hours : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġtw ake _ t ens : Int Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġpower : Boolean Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġsw ing : Boolean Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġsleep : Boolean Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġwake : Boolean Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġt now _ pm : Boolean Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġt sleep _ pm : Boolean Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġtw ake _ pm : Boolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval ĠF AN _ AUTO Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval ĠF AN _ 1 Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠF AN _ 2 Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval ĠF AN _ 3 Ġ= Ġ 3 ĊĠĠĠ Ġprivate Ġval ĠMODE _ DR Y Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval ĠMODE _ HOT Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠMODE _ COL D Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval ĠMODE _ F AN Ġ= Ġ 3 ĊĠĠĠ Ġprivate Ġval ĠTEMP _ 1 6 Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval ĠLOW Ġ= Ġ 5 5 2 ĊĠĠĠ Ġprivate Ġval ĠHIGH Ġ= Ġ 1 6 8 3 ĊĠĠĠ Ġinternal Ġvar Ġshared Pref : SharedPreferences ĊĠĠĠ Ġinternal Ġvar Ġpref Editor : SharedPreferences . Editor ĊĠĠĠ Ġprivate Ġval Ġraw Ġ= Ġint ArrayOf ( 8 8 3 5 , Ġ 4 4 9 7 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 1 6 8 3 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 5 2 , Ġ 5 0 0 6 7 ) ĊĠĠĠ Ġinternal Ġfun Ġset _ checksum () Ġ{ ĊĠĠĠĠĠ Ġchecksum Ġ= Ġ(( ts leep _ hours Ġand Ġ 1 5 ) Ġ+ Ġ( if Ġ( ts leep _ pm ) Ġ 8 Ġelse Ġ 0 ) Ġ+ Ġ( ts leep _ t ens Ġand Ġ 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ( tw ake _ hours Ġand Ġ 1 5 ) Ġ+ Ġ( if Ġ( tw ake _ pm ) Ġ 8 Ġelse Ġ 0 ) Ġ+ Ġ( tw ake _ t ens Ġand Ġ 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ( tn ow _ hours Ġand Ġ 1 5 ) Ġ+ Ġ( if Ġ( tn ow _ pm ) Ġ 8 Ġelse Ġ 0 ) Ġ+ Ġ( tn ow _ t ens Ġand Ġ 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ( if Ġ( wake ) Ġ 4 Ġelse Ġ 0 ) Ġ+ Ġ( if Ġ( sleep ) Ġ 2 Ġelse Ġ 0 ) Ġ+ Ġ( if Ġ( power ) Ġ 1 Ġelse Ġ 0 ) Ġ+ Ġ( tn ow _ units Ġand Ġ 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ( if Ġ( swing ) Ġ 2 Ġelse Ġ 0 ) Ġ+ Ġ( temperature Ġand Ġ 1 5 ) Ġ+ Ġ( fan Ġand Ġ 3 ) Ġ* Ġ 4 Ġ+ Ġ( mode Ġand Ġ 3 )) ĊĠĠĠĠĠ Ġchecksum Ġ= Ġchecksum Ġ% Ġ 1 6 ĊĠĠĠ Ġ} ĊĠĠĠ Ġinternal Ġfun Ġset _ time () Ġ{ ĊĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠ Ġt now _ hours Ġ= ĠcurrentTime . get ( Calendar . HOUR ) ĊĠĠĠĠĠ Ġt now _ pm Ġ= ĠcurrentTime . get ( Calendar . AM _ PM ) Ġ== ĠCalendar . PM ĊĠĠĠĠĠ Ġt now _ t ens Ġ= ĠcurrentTime . get ( Calendar . MINUTE ) Ġ/ Ġ 1 0 ĊĠĠĠĠĠ Ġt now _ units Ġ= ĠcurrentTime . get ( Calendar . MINUTE ) Ġ% Ġ 1 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġinternal Ġfun Ġupdate _ raw () Ġ{ ĊĠĠĠĠĠ Ġraw [ 3 5 ] Ġ= Ġif Ġ(( checksum Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 3 7 ] Ġ= Ġif Ġ(( checksum Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 3 9 ] Ġ= Ġif Ġ(( checksum Ġand Ġ 4 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 4 1 ] Ġ= Ġif Ġ(( checksum Ġand Ġ 8 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 4 3 ] Ġ= Ġif Ġ(( mode Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 4 5 ] Ġ= Ġif Ġ(( mode Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 4 7 ] Ġ= Ġif Ġ(( fan Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 4 9 ] Ġ= Ġif Ġ(( fan Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 5 1 ] Ġ= Ġif Ġ(( temperature Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 5 3 ] Ġ= Ġif Ġ(( temperature Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 5 5 ] Ġ= Ġif Ġ(( temperature Ġand Ġ 4 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 5 7 ] Ġ= Ġif Ġ(( temperature Ġand Ġ 8 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 6 1 ] Ġ= Ġif Ġ( swing ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 6 7 ] Ġ= Ġif Ġ(( tn ow _ units Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 6 9 ] Ġ= Ġif Ġ(( tn ow _ units Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 7 1 ] Ġ= Ġif Ġ(( tn ow _ units Ġand Ġ 4 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 7 3 ] Ġ= Ġif Ġ(( tn ow _ units Ġand Ġ 8 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 7 5 ] Ġ= Ġif Ġ( power ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 7 7 ] Ġ= Ġif Ġ( sleep ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 7 9 ] Ġ= Ġif Ġ( wake ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 8 3 ] Ġ= Ġif Ġ(( tn ow _ t ens Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 8 5 ] Ġ= Ġif Ġ(( tn ow _ t ens Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 8 7 ] Ġ= Ġif Ġ(( tn ow _ t ens Ġand Ġ 4 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 8 9 ] Ġ= Ġif Ġ( tn ow _ pm ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 9 1 ] Ġ= Ġif Ġ(( tn ow _ hours Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 9 3 ] Ġ= Ġif Ġ(( tn ow _ hours Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 9 5 ] Ġ= Ġif Ġ(( tn ow _ hours Ġand Ġ 4 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 9 7 ] Ġ= Ġif Ġ(( tn ow _ hours Ġand Ġ 8 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 9 9 ] Ġ= Ġif Ġ(( tw ake _ t ens Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 0 1 ] Ġ= Ġif Ġ(( tw ake _ t ens Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 0 3 ] Ġ= Ġif Ġ(( tw ake _ t ens Ġand Ġ 4 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 0 5 ] Ġ= Ġif Ġ( tw ake _ pm ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 0 7 ] Ġ= Ġif Ġ(( tw ake _ hours Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 0 9 ] Ġ= Ġif Ġ(( tw ake _ hours Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 1 1 ] Ġ= Ġif Ġ(( tw ake _ hours Ġand Ġ 4 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 1 3 ] Ġ= Ġif Ġ(( tw ake _ hours Ġand Ġ 8 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 1 5 ] Ġ= Ġif Ġ(( ts leep _ t ens Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 1 7 ] Ġ= Ġif Ġ(( ts leep _ t ens Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 1 9 ] Ġ= Ġif Ġ(( ts leep _ t ens Ġand Ġ 4 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 2 1 ] Ġ= Ġif Ġ( ts leep _ pm ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 2 3 ] Ġ= Ġif Ġ(( ts leep _ hours Ġand Ġ 1 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 2 5 ] Ġ= Ġif Ġ(( ts leep _ hours Ġand Ġ 2 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 2 7 ] Ġ= Ġif Ġ(( ts leep _ hours Ġand Ġ 4 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠĠĠ Ġraw [ 1 2 9 ] Ġ= Ġif Ġ(( ts leep _ hours Ġand Ġ 8 ) Ġ> Ġ 0 ) ĠHIGH Ġelse ĠLOW ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }