package Ġcom . example Ċ Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . annotation . Ui Thread Ċ import Ġandroid . view . View Ċ import Ġcom . example . tools . Alarm Tools Ċ import Ġcom . example . x utils . db . Db Tool Ċ import Ġcom . example . x utils . db . Alarm Clock Ċ import Ġkotlinx . android . synt hetic . main . layout _ content .* Ċ import Ġkotlinx . android . synt hetic . main . layout _ toolbar .* Ċ import Ġorg . jetbrains . ank o . do Async Ċ import Ġorg . jetbrains . ank o . ui Thread Ċ import Ġandroid . R . layout Ċ import Ġcom . example . sleep tracker . R Ċ Ċ class ĠContent Activity Ġ: ĠBasic Activity () Ġ{ ĊĠĠĠ Ġvar Ġ Ġm MediaPlayer Ġ= ĠMedia Player (); ĊĠĠĠ Ġprivate Ġvar Ġmodel Ġ= ĠAlarm Clock (); ĊĠĠĠ Ġprivate Ġvar Ġid Ġ: String Ġ=" "; ĊĠĠĠ Ġ// ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . layout _ content ) ĊĠĠĠĠĠĠĠ Ġinit Views (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views (){ ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġintent . getString Extra (" ID "). toString () ĊĠĠĠĠĠĠĠ Ġtoolbar . title =" It 's Ġtime Ġ" ĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Ġ= ĠDb Tool . get Db Manager (). selector ( Alarm Clock :: class . java ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhere (" ID "," =", id ). findFirst (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model == null ) Ġreturn @ ui Thread ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote _ text . text Ġ= Ġmodel . note ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop _ rt . visibility = ĠView . VISIBLE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . active Ġ== Ġ" 1 "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit MediaPlayer (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop _ rt . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m MediaPlayer . is Playing ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm MediaPlayer . stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit MediaPlayer () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm MediaPlayer . set DataSource ( this @ Content Activity , ĠUri . parse ( model . sound )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm MediaPlayer . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm MediaPlayer . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm MediaPlayer . setOn Completion Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm MediaPlayer . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm MediaPlayer . is Loop ing Ġ= true ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġreset Active Type (); ĊĠĠĠĠĠĠĠ Ġm MediaPlayer . release (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Active Type (){ ĊĠĠĠĠĠĠĠ Ġif ( model != null Ġ&& Ġmodel . repeat Day == ĠSet Clock Activity . Week DAY . Never . name ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . active =" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDb Tool . save OrUpdate ( model ); ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Tools . cancel Alarm ( this , model ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }