package Ġio . homeassistant . comp anion . android . sensors Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Log Ċ import Ġcom . google . android . gms . location . Activity Recognition Ċ import Ġcom . google . android . gms . location . Activity Recognition Result Ċ import Ġcom . google . android . gms . location . Detected Activity Ċ import Ġcom . google . android . gms . location . Sleep Class ify Event Ċ import Ġcom . google . android . gms . location . Sleep Segment Event Ċ import Ġcom . google . android . gms . location . Sleep Segment Request Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġio . homeassistant . comp anion . android . common . sensors . Sensor Manager Ċ import Ġio . homeassistant . comp anion . android . common . R Ġas Ġcommon R Ċ Ċ @ Android EntryPoint Ċ class ĠActivity Sensor Manager Ġ: ĠBroadcast Receiver (), ĠSensor Manager Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠTAG Ġ= Ġ" Activity SM " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ UPDATE _ ACTIVITY Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" io . homeassistant . comp anion . android . background . UPDATE _ ACTIVITY " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ SLEEP _ ACTIVITY Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" io . homeassistant . comp anion . android . background . SLEEP _ ACTIVITY " ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsleep Registration Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġactivity Ġ= ĠSensor Manager . Basic Sensor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" detected _ activity ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sensor ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommon R . string . basic _ sensor _ name _ activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommon R . string . sensor _ description _ detected _ activity ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsleep Confidence Ġ= ĠSensor Manager . Basic Sensor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sleep _ confidence ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sensor ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommon R . string . basic _ sensor _ name _ sleep _ confidence , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommon R . string . sensor _ description _ sleep _ confidence , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Of Measurement Ġ= Ġ"% ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Class Ġ= ĠSensor Manager . STATE _ CLASS _ MEAS UREMENT ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsleep Segment Ġ= ĠSensor Manager . Basic Sensor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sleep _ segment ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sensor ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommon R . string . basic _ sensor _ name _ sleep _ segment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommon R . string . sensor _ description _ sleep _ segment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Of Measurement Ġ= Ġ" ms " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( intent . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ UPDATE _ ACTIVITY Ġ-> Ġhandle Activity Update ( intent , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ SLEEP _ ACTIVITY Ġ-> Ġhandle Sleep Update ( intent , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLog . w ( TAG , Ġ" Unknown Ġintent Ġaction : Ġ${ intent . action } !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetActivity Pending Intent ( context : ĠContext ): ĠPending Intent Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠActivity Sensor Manager :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠACTION _ UPDATE _ ACTIVITY ĊĠĠĠĠĠĠĠ Ġreturn ĠPending Intent . get Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ UPDATE _ CURRENT Ġor ĠPending Intent . FLAG _ MUT ABLE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Sleep Pending Intent ( context : ĠContext ): ĠPending Intent Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠActivity Sensor Manager :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠACTION _ SLEEP _ ACTIVITY ĊĠĠĠĠĠĠĠ Ġreturn ĠPending Intent . get Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ UPDATE _ CURRENT Ġor ĠPending Intent . FLAG _ MUT ABLE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Activity Update ( intent : ĠIntent , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Received Ġactivity Ġupdate .") ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Recognition Result . has Result ( intent )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠActivity Recognition Result . extract Result ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġprob Activity Ġ= Ġtype ToString ( result . most Prob able Activity ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prob Activity Ġ== Ġ" on _ foot ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprob Activity Ġ= Ġget Sub Activity ( result ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Sensor Updated ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprob Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sensor Icon ( prob Activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . prob able Activities . map Ġ{ Ġtype ToString ( it ) Ġto Ġit . confidence Ġ}. toMap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Sleep Update ( intent : ĠIntent , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Received Ġsleep Ġupdate ") ĊĠĠĠĠĠĠĠ Ġif Ġ( Sleep Class ify Event . has Events ( intent ) Ġ&& Ġis Enabled ( context , Ġsleep Confidence . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Sleep Ġclassify Ġevent Ġdetected ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsleep Class ify Event Ġ= ĠSleep Class ify Event . extract Events ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sleep Class ify Event . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Sleep Ġclassify Ġhas Ġan Ġactual Ġevent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sensor Updated ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Confidence , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Class ify Event . last (). confidence , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mdi : sleep ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" light " Ġto Ġsleep Class ify Event . last (). light , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" motion " Ġto Ġsleep Class ify Event . last (). motion , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timestamp " Ġto Ġsleep Class ify Event . last (). timestamp Millis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSend Ġthe Ġupdate Ġimmediately ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSensor Worker . start ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Sleep Segment Event . has Events ( intent ) Ġ&& Ġis Enabled ( context , Ġsleep Segment . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Sleep Ġsegment Ġevent Ġdetected ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsleep Segment Event Ġ= ĠSleep Segment Event . extract Events ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sleep Segment Event . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Sleep Ġsegment Ġhas Ġan Ġactual Ġevent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sensor Updated ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Segment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Segment Event . last (). segment Duration Millis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mdi : sleep ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start " Ġto Ġsleep Segment Event . last (). startTime Millis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" end " Ġto Ġsleep Segment Event . last (). endTime Millis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" status " Ġto Ġget Sleep Segment Status ( sleep Segment Event . last (). status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtype ToString ( activity : ĠDet ected Activity ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( activity . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDet ected Activity . IN _ VE H IC LE Ġ-> Ġ" in _ vehicle " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDet ected Activity . ON _ B ICY CLE Ġ-> Ġ" on _ bic ycle " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDet ected Activity . ON _ FO OT Ġ-> Ġ" on _ foot " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDet ected Activity . RUNNING Ġ-> Ġ" running " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDet ected Activity . ST ILL Ġ-> Ġ" still " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDet ected Activity . T IL TING Ġ-> Ġ" til ting " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDet ected Activity . WAL K ING Ġ-> Ġ" walk ing " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDet ected Activity . UNKNOWN Ġ-> Ġ" unknown " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Sub Activity ( result : ĠActivity Recognition Result ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result . prob able Activities [ 1 ]. type Ġ== ĠDet ected Activity . RUNNING ) Ġreturn Ġ" running " ĊĠĠĠĠĠĠĠ Ġif Ġ( result . prob able Activities [ 1 ]. type Ġ== ĠDet ected Activity . WAL K ING ) Ġreturn Ġ" walk ing " ĊĠĠĠĠĠĠĠ Ġreturn Ġ" on _ foot " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Sleep Segment Status ( int : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( int ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSleep Segment Event . STATUS _ SUCCESS FUL Ġ-> Ġ" successful " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSleep Segment Event . STATUS _ MISSING _ DATA Ġ-> Ġ" missing Ġdata " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSleep Segment Event . STATUS _ NOT _ DETECT ED Ġ-> Ġ" not Ġdetected " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdocs Link (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" https :// comp anion . home - assistant . io / docs / core / sensors # activity - sensors " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġenabled ByDefault : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġval Ġname : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcommon R . string . sensor _ name _ activity ĊĊĠĠĠ Ġoverride Ġfun Ġget Available Sensors ( context : ĠContext ): ĠList < Sensor Manager . Basic Sensor > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( activity , Ġsleep Confidence , Ġsleep Segment ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrequired Permissions ( sensor Id : ĠString ): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACTIVITY _ RE CO GN ITION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrequest Sensor Update ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ( context , Ġactivity . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġact Reg Ġ= ĠActivity Recognition . getClient ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠgetActivity Pending Intent ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Unregister ing Ġfor Ġactivity Ġupdates .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġact Reg . remove Activity Updates ( pending Intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Register ing Ġfor Ġactivity Ġupdates .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġact Reg . request Activity Updates ( 1 2 0 0 0 0 , Ġpending Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled ( context , Ġsleep Confidence . id ) Ġ|| Ġis Enabled ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Segment . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ&& Ġ! sleep Registration ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= Ġget Sleep Pending Intent ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Register ing Ġfor Ġsleep Ġupdates ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled ( context , Ġsleep Confidence . id ) Ġ&& Ġ! isEnabled ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Segment . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Register ing Ġfor Ġsleep Ġconfidence Ġupdates Ġonly ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Recognition . getClient ( context ). request Sleep Segment Updates ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSleep Segment Request ( Sleep Segment Request . CLAS SI FY _ EVENTS _ ONLY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! isEnabled ( context , Ġsleep Confidence . id ) Ġ&& Ġis Enabled ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Segment . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Register ing Ġfor Ġsleep Ġsegment Ġupdates Ġonly ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Recognition . getClient ( context ). request Sleep Segment Updates ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSleep Segment Request ( Sleep Segment Request . SEGMENT _ EVENTS _ ONLY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Register ing Ġfor Ġboth Ġsleep Ġconfidence Ġand Ġsegment Ġupdates ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Recognition . getClient ( context ). request Sleep Segment Updates ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSleep Segment Request . getDefault Sleep Segment Request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Successfully Ġregistered Ġfor Ġsleep Ġupdates ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Registration Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Failed Ġto Ġregister Ġfor Ġsleep Ġupdates ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Recognition . getClient ( context ). remove Sleep Segment Updates ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep Registration Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Sensor Icon ( activity : ĠString ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" in _ vehicle " Ġ-> Ġ" mdi : car " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" on _ bic ycle " Ġ-> Ġ" mdi : bi ke " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" on _ foot " Ġ-> Ġ" mdi : sh oe - print " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" still " Ġ-> Ġ" mdi : sleep " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" til ting " Ġ-> Ġ" mdi : phone - rotate - portrait " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" walk ing " Ġ-> Ġ" mdi : walk " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" running " Ġ-> Ġ" mdi : run " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" mdi : progress - question " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ