package Ġcom . aware framework . android . sensor . camera . example Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . support . annotation . Requires Api Ċ import Ġandroid . support . v 4 . app . Notification Compat Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġcom . aware framework . android . sensor . camera . Camera Ċ import Ġcom . aware framework . android . sensor . camera . R Ċ Ċ /** Ċ Ġ* ĠPersistent Ġbroadcast Ġservice Ċ Ġ* Ċ Ġ* Ġ@ author Ġ Ġser cant Ċ Ġ* Ġ@ date Ġ 1 2 / 0 6 / 2 0 1 8 Ċ Ġ*/ Ċ class ĠBroadcast Service Ġ: ĠService () Ġ{ ĊĊĠĠĠ Ġclass ĠEntry Receiver Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent . action Ġ== ĠIntent . ACTION _ BOOT _ COMPLETED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . start Foreground Service ( context , ĠIntent ( context , ĠBroadcast Service :: class . java )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠMainActivity . get Stored Config ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config . enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCamera . Builder ( context ). build ( config ). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbroadcast Receiver : ĠBroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent . action Ġ== ĠIntent . ACTION _ USER _ PRESENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send Broadcast ( Intent ( context , ĠEvent Receiver :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠEvent Receiver . ACTION _ USER _ PRESENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĊĠĠĠĠĠĠĠ Ġregister Receiver ( broadcast Receiver , ĠIntent Filter (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Action ( Intent . ACTION _ USER _ PRESENT ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart Command ( intent , Ġflags , Ġstart Id ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTART _ STICK Y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Self () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTART _ NOT _ STICK Y ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġunregister Receiver ( broadcast Receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Foreground () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Notification Channel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġearlier Ġversion Ġchannel ĠID Ġis Ġnot Ġused ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// developer . android . com / reference / android / support / v 4 / app / Notification Compat . Builder . html # Notification Compat . Builder ( android . content . Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification Builder Ġ= ĠNotification Compat . Builder ( this , Ġchannel Id ) ĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= Ġnotification Builder . set O ngo ing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ fiber _ smart _ record _ black _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ MIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Category ( Notification . CATEGORY _ SERVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text (" Aware Ġbroadcast Ġservice Ġis Ġrunning .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġstart Foreground ( 1 0 2 , Ġnotification ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) ĊĠĠĠ Ġprivate Ġfun Ġcreate Notification Channel (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= Ġ" aware _ broadcast _ service " ĊĠĠĠĠĠĠĠ Ġval Ġchannel Name Ġ= Ġ" Aware ĠBroadcast ĠService " ĊĠĠĠĠĠĠĠ Ġval Ġchan Ġ= ĠNotification Channel ( channelId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Name , ĠNotification Manager . IMPORT ANCE _ NONE ) ĊĠĠĠĠĠĠĠ Ġchan . light Color Ġ= ĠColor . BLUE ĊĠĠĠĠĠĠĠ Ġchan . lock screen Visibility Ġ= ĠNotification . VIS IBILITY _ PRIVATE ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġget System Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠ Ġservice . create Notification Channel ( chan ) ĊĠĠĠĠĠĠĠ Ġreturn Ġchannel Id ĊĠĠĠ Ġ} Ċ }