package Ġcom . me li ks ah c ak ir . spot ial arm . service Ċ Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . hardware . Sensor Ċ import Ġandroid . hardware . Sensor Event Ċ import Ġandroid . hardware . Sensor EventListener Ċ import Ġandroid . hardware . Sensor Manager Ċ import Ġandroid . media . Audio Attributes Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . media . Ring tone Manager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . os . V ibration Effect Ċ import Ġandroid . os . V ibr ator Ċ import Ġandroid . speech . tts . Text ToS peech Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . net . to Uri Ċ import Ġcom . google . firebase . auth . k tx . auth Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . NOTIFICATION _ ID Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . Notification Util Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . R Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . Utils Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . broadcast . Alarm Receiver Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . create Pending Intent To Activity Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . data . Alarm Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . firebase . Fire Store Helper Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . isConnected To Internet Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . preferences . Preferences Ċ import Ġcom . me li ks ah c ak ir . spot ial arm . set Language OrDefault Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . util . Locale Ċ import Ġjava . util . Timer Ċ import Ġjava . util . Timer Task Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠAlarm Service Ġ: ĠService (), ĠMedia Player . On Prepared Listener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠV IB RATE _ DELAY Ġ= Ġ 1 0 0 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠV IB RATE _ PLAY Ġ= Ġ 1 0 0 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠV IB RATE _ SLEEP Ġ= Ġ 1 0 0 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAX _ VOLUME Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠV OL UME _ SIL ENT Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠV OL UME _ FULL Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFA DE _ INTERVAL Ġ= Ġ 2 5 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠZ _ AXIS Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠACC _ THRESHOLD Ġ= Ġ 9 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSPE E CH _ RATE Ġ= Ġ 0 . 8 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmedia Player : ĠMedia Player ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvi br ator : ĠV ibr ator ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsensor Manager : ĠSensor Manager ĊĠĠĠ Ġprivate Ġvar Ġaccel erometer : ĠSensor ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġt ts : ĠText ToS peech ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġalarm : ĠAlarm ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġvolume Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġtimer : ĠTimer ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġenable Accel erometer Ġ= ĠPreferences . face Down To Sn oo ze ĊĠĠĠ Ġprivate Ġvar Ġenable T ts Ġ= ĠPreferences . read Alarm Time L oud ĊĊĠĠĠ Ġprivate Ġval Ġaccel erometer Listener Ġ= Ġobject Ġ: ĠSensor EventListener Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Face Up Completed Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Accuracy Changed ( arg 0 : ĠSensor , Ġarg 1 : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sensor Changed ( arg 0 : ĠSensor Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġarg 0 . values [ Z _ AXIS ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ>= ĠACC _ THRESHOLD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Face Up Completed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Face Up Completed Ġ&& Ġvalue Ġ<= Ġ- ACC _ THRESHOLD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsensor Manager . unregister Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Alarm Service , ĠAlarm Receiver :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠAlarm Receiver . ACTION _ S NO O ZE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Alarm Receiver . EXTRA _ ALARM , Ġalarm ?. to Bundle ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Face Up Completed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Broadcast ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġt ts Listener Ġ= ĠText ToS peech . OnInit Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== ĠText ToS peech . SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġt ts ?. set Language OrDefault ( Locale . US ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( res Ġ== ĠText ToS peech . LANG _ MISSING _ DATA Ġ|| Ġres Ġ== ĠText ToS peech . LANG _ NOT _ SUPPORTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠgetString ( R . string . tts _ not _ supported ), ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( alarm Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhour Ġ= Ġalarm !!. hour ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hour Ġ> ĠUtils . NO ON ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ-= ĠUtils . NO ON ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= ĠgetString ( R . string . alarm _ speech , Ġhour , Ġalarm !!. minute ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ts ?. speak ( str , ĠText ToS peech . QUEUE _ FLUSH , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġmedia Player Ġ= ĠMedia Player () ĊĠĠĠĠĠĠĠ Ġval Ġusage Ġ= Ġif Ġ( Preferences . use Device Alarm Volume ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Attributes . USAGE _ ALARM ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Attributes . USAGE _ MEDIA ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġattrs Ġ= ĠAudio Attributes . Builder (). set Usage ( usage ). build () ĊĠĠĠĠĠĠĠ Ġmedia Player . reset () ĊĠĠĠĠĠĠĠ Ġmedia Player . set Audio Attributes ( attrs ) ĊĠĠĠĠĠĠĠ Ġmedia Player . setOn Prepared Listener ( this ) ĊĠĠĠĠĠĠĠ Ġmedia Player . setOn Error Listener Ġ{ Ġ_, Ġwhat , Ġextra Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup MediaPlayer Data And Start ("") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" Service ĠMedia ĠPlayer : Ġwhat Ġ= Ġ$ what Ġextra : Ġ$ extra ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Error Listener Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmedia Player . is Loop ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġvi br ator Ġ= Ġget System Service ( Context . V IB R ATOR _ SERVICE ) Ġas ĠV ibr ator ĊĠĠĠĠĠĠĠ Ġtimer Ġ= ĠTimer ( true ) ĊĠĠĠĠĠĠĠ Ġsensor Manager Ġ= Ġget System Service ( Context . SENSOR _ SERVICE ) Ġas ĠSensor Manager ĊĠĠĠĠĠĠĠ Ġval Ġsensors Ġ= Ġsensor Manager . get Sensor List ( Sensor . TYPE _ AC CEL ERO METER ) ĊĠĠĠĠĠĠĠ Ġaccel erometer Ġ= Ġsensors . first OrNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġintent ?. get Bundle Extra ( Alarm Receiver . EXTRA _ ALARM ) ĊĠĠĠĠĠĠĠ Ġalarm Ġ= ĠAlarm . from Bundle ( bundle ) ĊĠĠĠĠĠĠĠ Ġenable Accel erometer Ġ= Ġenable Accel erometer Ġand Ġ( alarm ?. sn oo ze Ġ?: Ġfalse ) ĊĠĠĠĠĠĠĠ Ġenable T ts Ġ= Ġenable T ts Ġand Ġ( alarm Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġalarm ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Alarm Go es Off ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enable Accel erometer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsensor Manager . register Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccel erometer Listener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccel erometer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSensor Manager . SENSOR _ DELAY _ NORMAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enable T ts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ts Ġ= ĠText ToS peech ( this , Ġt ts Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ts ?. set Speech Rate ( SPE E CH _ RATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠSTART _ STICK Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Alarm Go es Off ( alarm : ĠAlarm ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( alarm . vi br ate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= Ġlong ArrayOf ( V IB RATE _ DELAY , ĠV IB RATE _ PLAY , ĠV IB RATE _ SLEEP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator . vi br ate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV ibration Effect . create Wave form ( pattern , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator . vi br ate ( pattern , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFire Store Helper . uid Ġ= ĠFirebase . auth . currentUser ?. uid Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFire Store Helper . fetch Statistics () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFire Store Helper . statistics ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Alarm W ent Off ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! alarm Tracks . contains ( alarm . track Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Tracks . add ( alarm . track Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFire Store Helper . update Remote Statistics () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsetup MediaPlayer Data And Start ( alarm . track Url ) ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġalarm . alarm Time ĊĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠDateTime Formatter . of Pattern (" hh : mm ") ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġsb . append ( time . format ( formatter )). append (" Ġ") ĊĠĠĠĠĠĠĠ Ġif Ġ( alarm . hour Ġ>= ĠUtils . NO ON ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( getString ( R . string . pm )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( getString ( R . string . am )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( alarm . description . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" Ġ"). append ( alarm . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnotification Util Ġ= ĠNotification Util ( this @ Alarm Service ) ĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= Ġnotification Util . create Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Alarm Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . turn _ off _ alarm _ now ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Pending Intent To Activity ( alarm ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Sn oo ze Intent ( alarm ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Turn Off Intent ( alarm ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġstart Foreground ( NOTIFICATION _ ID , Ġnotification ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Fade In () Ġ{ ĊĠĠĠĠĠĠĠ Ġvolume Ġ= ĠV OL UME _ SIL ENT ĊĠĠĠĠĠĠĠ Ġmedia Player . set Volume ( volume , Ġvolume ) ĊĠĠĠĠĠĠĠ Ġval Ġfade Duration Ġ= ĠTimeUnit . SECONDS . to Millis ( Preferences . fadeIn Duration . to Long ()) ĊĠĠĠĠĠĠĠ Ġvar Ġmax Volume Ġ= ĠV OL UME _ FULL ĊĠĠĠĠĠĠĠ Ġif Ġ(! Preferences . use Device Alarm Volume ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Volume Ġ= ĠV OL UME _ FULL Ġ* ĠPreferences . custom Volume Ġ/ ĠMAX _ VOLUME ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠnumberOf Steps Ġ= Ġfade Duration Ġ/ ĠFA DE _ INTERVAL ĊĠĠĠĠĠĠĠ Ġval Ġdelta Volume Ġ= Ġmax Volume Ġ/ ĠnumberOf Steps ĊĊĠĠĠĠĠĠĠ Ġif Ġ( timer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Ġ= ĠTimer ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtimer Task : ĠTimer Task Ġ= Ġobject Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Ġ+= Ġdelta Volume ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . set Volume ( volume , Ġvolume ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( volume Ġ>= Ġmax Volume ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer ?. purge () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtimer ?. schedule ( timer Task , Ġ 0 L , ĠFA DE _ INTERVAL . to Long ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup MediaPlayer Data And Start ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ!= Ġ"" Ġ&& Ġis Connected To Internet ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . set DataSource ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . prepare Async () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup MediaPlayer Data And Start ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġsound Ġ= ĠPreferences . fallback Audio Content Uri ?. to Uri () ĊĠĠĠĠĠĠĠ Ġif Ġ( sound Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsound Ġ= ĠRing tone Manager . get Actual Default Ring tone Uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Alarm Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRing tone Manager . TYPE _ ALARM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( sound Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsound Ġ= ĠRing tone Manager . get Actual Default Ring tone Uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Alarm Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRing tone Manager . TYPE _ RING T ONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . set DataSource ( this @ Alarm Service , Ġsound !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . prepare Async () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( enable T ts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ts ?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ts ?. shutdown () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ts Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( enable Accel erometer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsensor Manager . unregister Listener ( accel erometer Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtimer ?. cancel () ĊĠĠĠĠĠĠĠ Ġtimer ?. purge () ĊĠĠĠĠĠĠĠ Ġtimer Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġmedia Player . stop () ĊĠĠĠĠĠĠĠ Ġmedia Player . release () ĊĠĠĠĠĠĠĠ Ġvi br ator . cancel () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( p 0 : ĠIntent ?): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Sn oo ze Intent ( alarm : ĠAlarm ): ĠPending Intent ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! alarm . sn oo ze ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġsn oo ze Intent Ġ= ĠIntent ( this . application Context , ĠAlarm Receiver :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠAlarm Receiver . ACTION _ S NO O ZE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Alarm Receiver . EXTRA _ ALARM , Ġalarm . to Bundle ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠPending Intent . get Broadcast ( this , Ġ 0 , Ġsn oo ze Intent , ĠPending Intent . FLAG _ UPDATE _ CURRENT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Turn Off Intent ( alarm : ĠAlarm ): ĠPending Intent Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this . application Context , ĠAlarm Receiver :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠAlarm Receiver . ACTION _ T URN _ OFF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Alarm Receiver . EXTRA _ ALARM , Ġalarm . to Bundle ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠPending Intent . get Broadcast ( this , Ġ 0 , Ġintent , ĠPending Intent . FLAG _ UPDATE _ CURRENT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepared ( player : ĠMedia Player ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Fade In () ĊĠĠĠĠĠĠĠ Ġplayer ?. start () ĊĠĠĠ Ġ} Ċ } Ċ