package Ġcom . lor cal host . wa key Ċ Ċ import Ġandroid . app . Alarm Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . hardware . Sensor Ċ import Ġandroid . hardware . Sensor Event Ċ import Ġandroid . hardware . Sensor EventListener Ċ import Ġandroid . hardware . Sensor Manager Ċ import Ġandroid . n fc . N def Message Ċ import Ġandroid . n fc . N fc Adapter Ċ import Ġandroid . n fc . N fc Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . support . v 4 . view . accessibility . Accessibility NodeInfo Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . Time Picker Ċ import Ġandroid . widget . Toast Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util .* Ċ import Ġkotlin . system . exit Process ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠSensor EventListener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġsensor : ĠSensor ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsensor Manager : ĠSensor Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis Face White Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġn fc Adapter Ġ: ĠN fc Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġn fc Pending Intent : ĠPending Intent ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġalarm Time Picker : ĠTime Picker ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpending Intent : ĠPending Intent ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġalarm Manager : ĠAlarm Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis Alarm Set Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent White Face Ġ= ĠR . drawable . face c ute 2 w ĊĠĠĠ Ġprivate Ġvar Ġcurrent Black Face Ġ= ĠR . drawable . face c ute 2 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġcheck N FC Status () ĊĊĊĠĠĠĠĠĠĠ Ġn fc Adapter Ġ= ĠN fc Adapter . getDefault Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġn fc Pending Intent Ġ= ĠPending Intent . getActivity ( this , Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , Ġjava Class ). add Flags ( Intent . FLAG _ ACTIVITY _ SINGLE _ TOP ), Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Intent ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġalarm Time Picker Ġ= ĠfindViewById < Time Picker >( R . id . time Picker ) ĊĠĠĠĠĠĠĠ Ġalarm Manager Ġ= Ġget System Service ( ALARM _ SERVICE ) Ġas ĠAlarm Manager ĊĊĊĠĠĠĠĠĠĠ Ġmy Background . set BackgroundColor ( Color . rgb ( 2 0 0 , 2 2 4 , 2 3 6 )) ĊĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON ) ĊĠĠĠĠĠĠĠ Ġhide StatusBar () ĊĊĠĠĠĠĠĠĠ Ġsensor Manager Ġ= Ġget System Service ( Context . SENSOR _ SERVICE ) Ġas ĠSensor Manager ĊĠĠĠĠĠĠĠ Ġsensor Ġ= Ġsensor Manager !!. getDefault Sensor ( Sensor . TYPE _ LIGHT ) ĊĊĠĠĠĠĠĠĠ Ġbtn N FC settings . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow N FC Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN FC status . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn N FC settings . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Settings . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Settings . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclock View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Alarm Set ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Manager !!. cancel ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Alarm Set Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Done . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Settings . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclock View . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alarm () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Alarm Set Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Accuracy Changed ( sensor : ĠSensor ?, Ġaccuracy : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sensor Changed ( event : ĠSensor Event ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event !!. values [ 0 ] Ġ< Ġ 8 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Face White Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Background . set BackgroundColor ( Color . rgb ( 0 , 0 , 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN FC status . setTextColor ( Color . rgb ( 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ute Face . setImage Resource ( current White Face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Settings . setBackground Resource ( R . drawable . settings w ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Face White Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Background . set BackgroundColor ( Color . rgb ( 2 0 0 , 2 2 4 , 2 3 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN FC status . setTextColor ( Color . rgb ( 0 , Ġ 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ute Face . setImage Resource ( current Black Face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Settings . setBackground Resource ( R . drawable . settings ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġn fc Adapter ?. enable Foreground Dispatch ( this , Ġn fc Pending Intent , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġsensor Manager !!. register Listener ( this , Ġsensor , ĠSensor Manager . SENSOR _ DELAY _ NORMAL ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġn fc Adapter ?. disable Foreground Dispatch ( this ) ĊĠĠĠĠĠĠĠ Ġsensor Manager !!. unregister Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on New Intent ( intent ) ĊĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ) Ġprocess Intent ( intent ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġprocess Intent ( check Intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( check Intent . action Ġ== ĠN fc Adapter . ACTION _ N DEF _ DIS COVER ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Messages Ġ= Ġcheck Intent . get Parcelable Array Extra ( N fc Adapter . EXTRA _ N DEF _ MESSAGES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( raw Messages Ġ!= Ġnull Ġ&& Ġraw Messages . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn def Msg Ġ= Ġraw Messages [ 0 ] Ġas ĠN def Message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ndef Msg . records Ġ!= Ġnull Ġ&& Ġn def Msg . records . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn def Record Ġ= Ġn def Msg . records [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( ndef Record . to Uri (). toString () Ġ== Ġ" bed room "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Good night !", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Black Face Ġ= ĠR . drawable . faces leep 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent White Face Ġ= ĠR . drawable . faces leep 3 w ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Face White ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ute Face . setImage Resource ( current White Face ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ute Face . setImage Resource ( current Black Face ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ndef Record . to Uri (). toString () Ġ== Ġ" b ath room "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Manager !!. cancel ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Process (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" N FC Ġtag Ġnot Ġrecognized ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Alarm () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġalarm Time Picker !!. current Hour ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġalarm Time Picker !!. current Minute ) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠAlarm Receiver :: class . java ) ĊĠĠĠĠĠĠĠ Ġpending Intent Ġ= ĠPending Intent . get Broadcast ( this , Ġ 0 , Ġintent , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġtime Ġ= Ġcalendar . time In Millis Ġ- Ġcalendar . time In Millis Ġ% Ġ 6 0 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ> Ġtime ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Calendar . AM _ PM Ġ=== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+= Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+= Ġtime Ġ+ Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 2 4 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalarm Manager !!. set ( Alarm Manager . RTC , Ġtime , Ġpending Intent ); ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Alarm Ġsuccessfully Ġset ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck N FC Status (){ ĊĠĠĠĠĠĠĠ Ġval Ġis N fc Supported : ĠBoolean Ġ= Ġn fc Adapter Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( is N fc Supported ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" N fc Ġis Ġnot Ġsupported Ġon Ġthis Ġdevice ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġthis . getSystem Service ( Context . N FC _ SERVICE ) Ġas ĠN fc Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġmanager . default Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(!( adapter Ġ!= Ġnull Ġ&& Ġadapter . isEnabled )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN FC status . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn N FC settings . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow N FC Settings () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" You Ġneed Ġto Ġenable ĠN FC ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Settings . ACTION _ N FC _ SETTINGS ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide StatusBar (){ ĊĠĠĠĠĠĠĠ Ġval Ġaction Bar Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġaction Bar ?. hide () ĊĠĠĠĠĠĠĠ Ġwindow . set Flags ( Accessibility NodeInfo Compat . ACTION _ NEXT _ HTML _ ELEMENT , ĠAccessibility NodeInfo Compat . ACTION _ NEXT _ HTML _ ELEMENT ) ĊĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġ 3 3 2 8 ĊĠĠĠ Ġ} Ċ Ċ }