package Ġbr . com . af is cher . f isl . services Ċ Ċ import Ġandroid . app . Intent Service Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Intent Ċ import Ġandroid . support . v 4 . app . Notification Compat Ċ import Ġandroid . support . v 4 . content . Wake ful Broadcast Receiver Ċ import Ġandroid . widget . Remote Views Ċ import Ġbr . com . af is cher . f isl . MainActivity Ċ import Ġbr . com . af is cher . f isl . R Ċ import Ġbr . com . af is cher . f isl . app . F IS L Application Ċ import Ġbr . com . af is cher . f isl . extensions . fromJson Ċ import Ġbr . com . af is cher . f isl . extensions . pad Ċ import Ġbr . com . af is cher . f isl . models . Alarm Base Ċ import Ġbr . com . af is cher . f isl . util . Consts Ċ import Ġcom . google . gson . Gson Ċ import Ġorg . jetbrains . ank o . notification Manager Ċ import Ġjava . util .* ĊĊ Ċ class ĠAlarm Notification Service : ĠIntent Service (" Alarm Notification Service ") Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġalarm Notification Manager : ĠNotification Manager ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ// Notification ĠID Ġfor ĠAlarm ĊĠĠĠĠĠĠĠ Ġval ĠNOT IFICATION _ ID Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Handle Intent ( intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsend Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalarm Ġ= ĠGson (). fromJson < Alarm Base >( intent !!. getString Extra (" alarm ")) ĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . time In Millis Ġ= Ġalarm . hour ĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy yyy Ġ= Ġcal [ Calendar . YEAR ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠMM Ġ= Ġcal [ Calendar . MONTH ] Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdd Ġ= Ġcal [ Calendar . DAY _ OF _ MONTH ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhh Ġ= Ġcal [ Calendar . HOUR _ OF _ DAY ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmm Ġ= Ġcal [ Calendar . MINUTE ] ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Notification Manager Ġ= Ġthis . notification Manager ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpre en che Ġcampos Ġda Ġnot ificaÃ§Ã£o Ġcustom izada ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Collapsed Ġ= ĠRemote Views ( this . packageName , ĠR . layout . notification _ alarm _ collapsed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Collapsed . setText View Text ( R . id . na _ col _ hour , Ġ"${ hh . pad ("< 0 0 ") }:${ mm . pad ("< 0 0 ") }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Collapsed . setText View Text ( R . id . na _ col _ date , Ġ"${ dd . pad ("< 0 0 ") }/${ MM . pad ("< 0 0 ") }/ $ yyyy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Collapsed . setText View Text ( R . id . na _ col _ room , Ġalarm . room ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Collapsed . setText View Text ( R . id . na _ col _ title , Ġalarm . title ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Expanded Ġ= ĠRemote Views ( this . packageName , ĠR . layout . notification _ alarm _ expanded ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Expanded . setText View Text ( R . id . na _ exp _ hour , Ġ"${ hh . pad ("< 0 0 ") }:${ mm . pad ("< 0 0 ") }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Expanded . setText View Text ( R . id . na _ exp _ date , Ġ"${ dd . pad ("< 0 0 ") }/${ MM . pad ("< 0 0 ") }/ $ yyyy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Expanded . setText View Text ( R . id . na _ exp _ room , Ġalarm . room ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Expanded . setText View Text ( R . id . na _ exp _ title , Ġalarm . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Expanded . setText View Text ( R . id . na _ exp _ owner , Ġalarm . owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Expanded . setText View Text ( R . id . na _ exp _ track , Ġif Ġ( alarm . track . contains ("- ")) Ġalarm . track . split (" Ġ- Ġ" )[ 1 ] Ġelse Ġalarm . track ) ĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġpending Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Intent Ġ= ĠIntent ( this , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Intent . action Ġ= ĠConst s . ACTION _ ALARM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Intent . add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ). add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TASK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . getActivity ( this , ĠSystem . currentTimeMillis (). toInt (), Ġmain Intent , ĠPending Intent . FLAG _ UPDATE _ CURRENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġal am Notification Builder Ġ= ĠNotification Compat . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStyle ( Notification Compat . Decorated Custom View Style ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . mip map . ic _ launcher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom ContentView ( content Collapsed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Big ContentView ( content Expanded ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġal am Notification Builder . setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot iy Ġnotification Ġmanager Ġabout Ġnew Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Notification Manager !!. notify ( System . currentTimeMillis (). toInt (), Ġal am Notification Builder . build ()) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW ake ful Broadcast Receiver . complete Wake ful Intent ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremove Ġo Ġalarm Ġap Ã³s Ġo Ġdis par o ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( application Ġas ĠF IS L Application ). alarm . notification Delete ( alarm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( application Ġas ĠF IS L Application ). alarm . delete ( alarm ) ĊĠĠĠĠĠĠĠ Ġ} Ċ }