package Ġcom . du yt uan . screen ing test . question 2 . receiver Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . media . Ring tone Manager Ċ import Ġandroid . util . Log Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . net . to Uri Ċ import Ġcom . du yt uan . screen ing test . core . util . Notification Util Ċ import Ġcom . du yt uan . screen ing test . question 2 . R Ċ import Ġcom . du yt uan . screen ing test . question 2 . model . Alarm Ċ import Ġcom . du yt uan . screen ing test . question 2 . util . Alarm Util Ċ import Ġcom . du yt uan . screen ing test . question 2 . util . Constants Ċ Ċ class ĠAlarm Receiver Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalarm : ĠAlarm Ġ= Ġintent . get Bundle Extra ( Constants . KEY _ B UNDLE _ ALARM )?. get Parcelable ( Constants . KEY _ ALARM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ ĠLog . d ( Constants . LOG _ TAG , Ġalarm . toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġalarm . get Notification Id () ĊĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcontext . getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= Ġcontext . getString ( R . string . app _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġalarm . label Ġ?: Ġcontext . getString ( R . string . alarm _ title ) ĊĠĠĠĠĠĠĠ Ġval Ġsound Uri Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm . sound Uri ?. to Uri () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( context , Ġchannel Id ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Small Icon ( R . drawable . ic _ alarm _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠContext Compat . getColor ( context , ĠR . color . orange ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Title ( context . getString ( R . string . app _ name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Text ( label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Ticker ( label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= ĠNotification Compat . PRIORITY _ HIGH ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alarm . is V ibration Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset V ibrate ( Notification Util . get V ibration Pat ten ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Category ( Notification Compat . CATEGORY _ ALARM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Sound ( sound Uri Ġ?: ĠRing tone Manager . getDefault Uri ( Ring tone Manager . TYPE _ ALARM )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Intent ( Alarm Util . get Launch Pending Intent ( context , Ġalarm )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Auto Cancel ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠNotification Util . create Notification Channel ( context , Ġchannel Id ) ĊĠĠĠĠĠĠĠ Ġmanager . notify ( id , Ġbuilder . build (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= Ġflags Ġor ĠNotification . FLAG _ IN SIST ENT ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠReset ĠAlarm Ġmanually ĊĠĠĠĠĠĠĠ ĠAlarm Util . set Reminder Alarm ( context , Ġalarm ) ĊĠĠĠ Ġ} Ċ }