package Ġcom . coding wit ht ashi . daily pr ayer Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . media . Ring tone Manager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Log Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . coding wit ht ashi . daily pr ayer . ui . activity . Alarm Activity . Companion . NOTIFICATION _ CHANNEL _ ID Ċ import Ġcom . coding wit ht ashi . daily pr ayer . dao . Notification Dao Ċ import Ġcom . coding wit ht ashi . daily pr ayer . model . Pr ayer Notification Ċ import Ġcom . coding wit ht ashi . daily pr ayer . ui . activity . Alarm Activity Ċ import Ġcom . coding wit ht ashi . daily pr ayer . ui . activity . MainActivity Ċ import Ġcom . coding wit ht ashi . daily pr ayer . utils . Common Utils Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġk unch ok Ġon Ġ 1 9 / 0 3 / 2 0 2 1 Ċ Ġ*/ Ċ @ Android EntryPoint Ċ Ġclass ĠAlarm Receiver Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġnotification Dao : ĠNotification Dao ĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e (" TAG ", Ġ" on Receive : Ġ:: :::::::: ", Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprefs : ĠSharedPreferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġprefs . getString (" signature ", Ġ""); ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġprefs . getString (" alarm _ time _ in _ hh mm ", Ġ""); ĊĠĠĠĠĠĠĠ Ġval Ġis Alarm On Ġ= Ġprefs . getBoolean (" is _ alarm _ on ", Ġfalse ); ĊĠĠĠĠĠĠĠ ĠLog . e (" TAG ", Ġ" on Receive : Ġ$ is Alarm On ", Ġ) ĊĠĠĠĠĠĠĠ Ġif ( is Alarm On ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Pending Intent Ġ= ĠPending Intent . getActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ/* ĠRequest Ġcode Ġ*/, Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ UPDATE _ CURRENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Builder : ĠNotification . Builder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification . Builder ( context , ĠNOT IFICATION _ CHANNEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpr ayer Notification Ġ= ĠPr ayer Notification ( null ," Pr ayer ĠTime "," H ey Ġ$ name , ĠIt Ġis ĠPr ayer Ġtime Ġnow ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Utils . format Date From Date ( Date ()), " ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Default ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Dao . insert ( pr ayer Notification ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" TAG ", Ġ" on Message Received : Ġnew Ġnotification Ġadded ", Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Builder . setContent Title (" Pr ayer ĠTime ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text (" H ey Ġ$ name , ĠIt Ġis ĠPr ayer Ġtime Ġnow ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . pr ayer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Large Icon ( Bitmap Factory . decode Resource ( context ?. resources , ĠR . drawable . bh ud ha )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( result Pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Notification Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= ĠNotification Manager . IMPORT ANCE _ HIGH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Channel Ġ= ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNOT IFICATION _ CHANNEL _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NOTIFICATION _ CHANNEL _ NAME ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimportance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . enable Lights ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . light Color Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . enable V ibration ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . set Sound ( Ring tone Manager . getDefault Uri ( Ring tone Manager . TYPE _ NOTIFICATION ), null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Channel . vi br ation Pattern Ġ= Ġlong ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( m Notification Manager Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Builder . set Channel Id ( NOTIFICATION _ CHANNEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Notification Manager . create Notification Channel ( notification Channel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( m Notification Manager Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Notification Manager . notify ( 0 Ġ/* ĠRequest ĠCode Ġ*/, Ġm Builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( time ?. isNotEmpty () !! Ġ&& Ġis Alarm On ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Activity . schedule Notification ( context , time , is Alarm On ); ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }