/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . we ar . watch face Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . icu . util . Calendar Ċ import Ġandroid . support . we arable . watch face . accessibility . Accessibility Utils Ċ import Ġandroid . support . we arable . watch face . accessibility . Content Description Label Ċ import Ġandroidx . annotation . Ui Thread Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġandroidx . we ar . comp lications . Comp lication Bounds Ċ import Ġandroidx . we ar . comp lications . Comp lication Helper Activity Ċ import Ġandroidx . we ar . comp lications . Default Comp lication Provider Policy Ċ import Ġandroidx . we ar . comp lications . data . Comp lication Data Ċ import Ġandroidx . we ar . comp lications . data . Comp lication Type Ċ import Ġandroidx . we ar . comp lications . data . Id And Comp lication Data Ċ import Ġandroidx . we ar . watch face . data . Comp lication Bounds Type Ċ import Ġandroidx . we ar . watch face . style . User Style Ċ import Ġandroidx . we ar . watch face . style . User Style Repository Ċ import Ġandroidx . we ar . watch face . style . User Style Setting . Comp lications User Style Setting Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ private Ġfun Ġget Component Name ( context : ĠContext ) Ġ= ĠComponent Name ( ĊĠĠĠ Ġcontext . packageName , ĊĠĠĠ Ġcontext . java Class . name Ċ ) Ċ Ċ /** Ċ Ġ* ĠThe Ġ[ Comp lication ] s Ġassociated Ġwith Ġthe Ġ[ Watch Face ]. ĠDynamic Ġcreation Ġof Ġcomp lications Ġisn 't Ċ Ġ* Ġsupported , Ġhowever Ġcomp lications Ġcan Ġbe Ġenabled Ġand Ġdisabled Ġby Ġ[ Comp lications User Style Setting ]. Ċ Ġ*/ Ċ public Ġclass ĠComp lications Manager ( ĊĠĠĠ Ġ/** ĠThe Ġcomp lications Ġassociated Ġwith Ġthe Ġwatch Ġface , Ġmay Ġbe Ġempty . Ġ*/ ĊĠĠĠ Ġcomp lication Collection : ĠCollection < Comp lication >, ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ User Style Repository ] Ġused Ġto Ġlisten Ġfor Ġ[ Comp lications User Style Setting ] Ġchanges Ġand ĊĠĠĠĠ Ġ* Ġapply Ġthem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġuser Style Repository : ĠUser Style Repository Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInterface Ġused Ġto Ġreport Ġuser Ġt aps Ġon Ġthe Ġcomp lication . ĠSee Ġ[ add Tap Listener ] Ġand ĊĠĠĠĠ Ġ* Ġ[ remove Tap Listener ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġinterface ĠT ap Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġuser Ġsingle Ġt aps Ġon Ġa Ġcomp lication . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcomp lication Id ĠThe Ġwatch Ġface 's Ġid Ġfor Ġthe Ġcomp lication Ġsingle Ġt apped ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġon Comp lication Single T apped ( comp lication Id : ĠInt ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwatch Face Host Api : ĠWatch Face Host Api ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcalendar : ĠCalendar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrenderer : ĠRenderer ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpending Update : ĠC ancellable Unique Task ĊĊĠĠĠ Ġ/** ĠA Ġmap Ġof Ġcomp lication ĠIDs Ġto Ġcomp lications . Ġ*/ ĊĠĠĠ Ġpublic Ġval Ġcomp lications : ĠMap < Int , ĠComp lication > Ġ= ĊĠĠĠĠĠĠĠ Ġcomp lication Collection . associate By ( Comp lication :: id ) ĊĊĠĠĠ Ġprivate Ġclass ĠInitial Comp lication Config ( ĊĠĠĠĠĠĠĠ Ġval Ġcomp lication Bounds : ĠComp lication Bounds , ĊĠĠĠĠĠĠĠ Ġval Ġenabled : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġsupported Types : ĠList < Comp lication Type >, ĊĠĠĠĠĠĠĠ Ġval Ġdefault Provider Policy : ĠDefault Comp lication Provider Policy , ĊĠĠĠĠĠĠĠ Ġval Ġdefault Provider Type : ĠComp lication Type ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ// ĠCopy Ġof Ġthe Ġoriginal Ġcomp lication Ġconfigs . ĠThis Ġis Ġnecessary Ġbecause Ġthe Ġsemantics Ġof ĊĠĠĠ Ġ// Ġ[ Comp lications User Style Setting ] Ġare Ġdefined Ġin Ġterms Ġof Ġan Ġoverride Ġapplied Ġto Ġthe Ġinitial ĊĠĠĠ Ġ// Ġconfig . ĊĠĠĠ Ġprivate Ġval Ġinitial Comp lication Configs : ĠMap < Int , ĠInitial Comp lication Config > Ġ= ĊĠĠĠĠĠĠĠ Ġcomp lication Collection . associate By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġit . id Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInitial Comp lication Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . comp lication Bounds , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . enabled , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . supported Types , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . default Provider Policy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . default Provider Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġcomp lication Listeners Ġ= ĠHashSet < Tap Callback >() ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcomp lication Collection : ĠCollection < Comp lication >, ĊĠĠĠĠĠĠĠ Ġuser Style Repository : ĠUser Style Repository , ĊĠĠĠĠĠĠĠ Ġrenderer : ĠRenderer ĊĠĠĠ Ġ) Ġ: Ġthis ( comp lication Collection , Ġuser Style Repository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . renderer Ġ= Ġrenderer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġinit ( ĊĠĠĠĠĠĠĠ Ġwatch Face Host Api : ĠWatch Face Host Api , ĊĠĠĠĠĠĠĠ Ġcalendar : ĠCalendar , ĊĠĠĠĠĠĠĠ Ġrenderer : ĠRenderer , ĊĠĠĠĠĠĠĠ Ġcomp lication Invalidate Listener : ĠComp lication . Invalidate Listener ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . watch Face Host Api Ġ= Ġwatch Face Host Api ĊĠĠĠĠĠĠĠ Ġthis . calendar Ġ= Ġcalendar ĊĠĠĠĠĠĠĠ Ġthis . renderer Ġ= Ġrenderer ĊĠĠĠĠĠĠĠ Ġpending Update Ġ= ĠC ancellable Unique Task ( watch Face Host Api . get Handler ()) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( _, Ġcomp lication ) Ġin Ġcomp lications ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . init ( this , Ġcomp lication Invalidate Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcomp lications Style Category Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Style Repository . schema . user Style Settings . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġis ĠComp lications User Style Setting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġa Ġlistener Ġif Ġwe Ġhave Ġa ĠComp lications User Style Setting Ġso Ġwe Ġcan Ġtrack Ġchanges Ġand ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġapply Ġthem . ĊĠĠĠĠĠĠĠ Ġif Ġ( comp lications Style Category Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġwe Ġapply Ġany Ġinitial ĠStyle Category Option Ġoverlay Ġby Ġinitializing Ġwith Ġnull . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġprevious Option : ĠComp lications User Style Setting . Comp lications Option ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Style Repository . add User Style Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠUser Style Repository . User Style Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon User Style Changed ( user Style : ĠUser Style ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnewly Selected Option Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Style [ comp lications Style Category ]?. to Comp lications Option () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Option Ġ!= Ġnewly Selected Option ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Option Ġ= Ġnewly Selected Option ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Comp lications Style Category Option ( new ly Selected Option ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠActivate Ġcomp lications . ĊĠĠĠĠĠĠĠ Ġschedule Update () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġapply Comp lications Style Category Option ( ĊĠĠĠĠĠĠĠ Ġstyle Option : ĠComp lications User Style Setting . Comp lications Option ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( id , Ġcomp lication ) Ġin Ġcomp lications ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoverride Ġ= Ġstyle Option . comp lication Overlay s . find Ġ{ Ġit . comp lication Id Ġ== Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Config Ġ= Ġinitial Comp lication Configs [ id ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠApply Ġstyle Option Ġoverrides . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . comp lication Bounds Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ?. comp lication Bounds Ġ?: Ġinitial Config . comp lication Bounds ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . enabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ?. enabled Ġ?: Ġinitial Config . enabled ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġ[ Comp lication ] Ġcorresponding Ġto Ġ[ id ], Ġif Ġthere Ġis Ġone , Ġor Ġ` null `. Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun Ġget ( id : ĠInt ): ĠComp lication ? Ġ= Ġcomp lications [ id ] ĊĊĠĠĠ Ġinternal Ġfun Ġschedule Update () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! pending Update . is Pending ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Update . post Unique ( this :: update Comp lications ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun ĠgetContent Description Labels (): ĠArray < Content Description Label > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlabels Ġ= Ġmutable ListOf < Content Description Label >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġa ĠContent Description Label Ġfor Ġthe Ġmain Ġclock Ġelement . ĊĠĠĠĠĠĠĠ Ġlabels . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContent Description Label ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer . get Main Clock Element Bounds (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccessibility Utils . make Time As Comp lication Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Face Host Api . getContext () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġa ĠContent Description Label Ġfor Ġeach Ġenabled Ġcomp lication . ĊĠĠĠĠĠĠĠ Ġfor Ġ(( _, Ġcomp lication ) Ġin Ġcomp lications ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comp lication . enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comp lication . bounds Type Ġ== ĠComp lication Bounds Type . BACKGROUND ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Bounds Type . BACKGROUND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . renderer . getId And Data ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContent Description Label ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Face Host Api . getContext (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . compute Bounds ( renderer . screen Bounds ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . comp lication Data . as Wire Comp lication Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlabels . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Comp lications () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactive Keys Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠWork Ġout Ġwhat 's Ġchanged Ġusing Ġthe Ġdirty Ġflags Ġand Ġissue Ġappropriate Ġwatch Face Host Api ĊĠĠĠĠĠĠĠ Ġ// Ġcalls . ĊĠĠĠĠĠĠĠ Ġvar Ġenabled Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġlabels Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ(( id , Ġcomp lication ) Ġin Ġcomp lications ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Dirty Ġ= Ġenabled Dirty Ġ|| Ġcomp lication . enabled Dirty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabels Dirty Ġ= Ġlabels Dirty Ġ|| Ġcomp lication . enabled Dirty ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comp lication . enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Keys . add ( id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels Dirty Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels Dirty Ġ|| Ġcomp lication . data Dirty Ġ|| Ġcomp lication . comp lication Bounds Dirty ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comp lication . default Provider Policy Dirty Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . default Provider Type Dirty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Face Host Api . setDefault Comp lication Provider With Fallback s ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . default Provider Policy . providers As List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . default Provider Policy . system Provider Fallback , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . default Provider Type . as Wire Comp lication Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . data Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . comp lication Bounds Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . supported Types Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . default Provider Policy Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . default Provider Type Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . enabled Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( enabled Dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Face Host Api . setActive Comp lications ( active Keys . to IntArray ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( labels Dirty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRegister ĠContent Description Labels Ġwhich Ġare Ġused Ġto Ġprovide Ġaccessibility Ġdata . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Face Host Api . setContent Description Labels ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetContent Description Labels () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġnew Ġcomp lication Ġdata Ġis Ġreceived . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwatch Face Comp lication Id ĠThe Ġid Ġof Ġthe Ġcomp lication Ġthat Ġthe Ġdata Ġrel ates Ġto . ĠThis ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġwill Ġbe Ġan Ġid Ġthat Ġwas Ġpreviously Ġsent Ġin Ġa Ġcall Ġto Ġ[ setActive Comp lications ]. ĠIf Ġthis Ġid ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġis Ġun recognized Ġthe Ġcall Ġwill Ġbe Ġa ĠN OP , Ġthe Ġonly Ġcircum stance Ġwhen Ġthat Ġhappens Ġis Ġif ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġthe Ġwatch Ġface Ġchanges Ġit 's Ġcomp lication Ġconfig Ġbetween Ġruns Ġe . g . Ġduring Ġdevelopment . ĊĠĠĠĠ Ġ* Ġ@ param Ġdata ĠThe Ġ[ Comp lication Data ] Ġthat Ġshould Ġbe Ġdisplayed Ġin Ġthe Ġcomp lication . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Ui Thread ĊĠĠĠ Ġinternal Ġfun Ġon Comp lication Data Update ( watch Face Comp lication Id : ĠInt , Ġdata : ĠComp lication Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomp lication Ġ= Ġcomp lications [ watch Face Comp lication Id ] Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġcomp lication . data Dirty Ġ= Ġcomp lication . data Dirty Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication . renderer . getId And Data ()?. comp lication Data Ġ!= Ġdata ) ĊĠĠĠĠĠĠĠ Ġcomp lication . renderer . setId And Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠId And Comp lication Data ( watch Face Comp lication Id , Ġdata ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ( comp lication . comp lication Data Ġas ĠMutable Observable Watch Data < Comp lication Data >). value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBr ings Ġattention Ġto Ġthe Ġcomp lication Ġby Ġbrief ly Ġhighlighting Ġit Ġto Ġprovide Ġvisual Ġfeedback ĊĠĠĠĠ Ġ* Ġwhen Ġthe Ġuser Ġhas Ġt apped Ġon Ġit . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcomp lication Id ĠThe Ġwatch Ġface 's ĠID Ġof Ġthe Ġcomp lication Ġto Ġbrief ly Ġhighlight ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Ui Thread ĊĠĠĠ Ġpublic Ġfun Ġbring Attention To Comp lication ( comp lication Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomp lication Ġ= Ġrequire NotNull ( comp lications [ comp lication Id ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġcomp lication Ġfound Ġwith ĠID Ġ$ comp lication Id " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcomp lication . setIs Highlight ed ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġweak Ref Ġ= ĠWeak Reference ( this ) ĊĠĠĠĠĠĠĠ Ġwatch Face Host Api . get Handler (). post Delayed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġwatch Ġface Ġmight Ġgo Ġaway Ġbefore Ġthis Ġcan Ġrun . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( weak Ref . get () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . setIs Highlight ed ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWatch Face Impl . CANCEL _ COMP LIC ATION _ HIG HL IGHT ED _ DELAY _ MS ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġid Ġof Ġthe Ġcomp lication Ġat Ġcoordinates Ġx , Ġy Ġor Ġ` null ` Ġif Ġthere Ġisn 't Ġone . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĠThe Ġx Ġcoordinate Ġof Ġthe Ġpoint Ġto Ġperform Ġa Ġhit Ġtest ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĠThe Ġy Ġcoordinate Ġof Ġthe Ġpoint Ġto Ġperform Ġa Ġhit Ġtest ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcomp lication Ġat Ġcoordinates Ġx , Ġy Ġor Ġ{@ code Ġnull } Ġif Ġthere Ġisn 't Ġone ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget Comp lication At ( x : ĠInt , Ġy : ĠInt ): ĠComp lication ? Ġ= ĊĠĠĠĠĠĠĠ Ġcomp lications . entries . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . enabled Ġ&& Ġit . value . bounds Type Ġ!= ĠComp lication Bounds Type . BACKGROUND Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . compute Bounds ( renderer . screen Bounds ). contains ( x , Ġy ) ĊĠĠĠĠĠĠĠ Ġ} ?. value ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġbackground Ġcomp lication Ġif Ġthere Ġis Ġone Ġor Ġ` null ` Ġotherwise . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġbackground Ġcomp lication Ġif Ġthere Ġis Ġone Ġor Ġ` null ` Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget Background Comp lication (): ĠComp lication ? Ġ= ĊĠĠĠĠĠĠĠ Ġcomp lications . entries . first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . bounds Type Ġ== ĠComp lication Bounds Type . BACKGROUND ĊĠĠĠĠĠĠĠ Ġ} ?. value ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġuser Ġsingle Ġt aps Ġon Ġa Ġcomp lication , Ġinvokes Ġthe Ġpermission Ġrequest Ġhelper ĊĠĠĠĠ Ġ* Ġif Ġneeded , Ġotherwise Ġs Ġthe Ġtap Ġaction . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcomp lication Id ĠThe Ġwatch Ġface 's Ġid Ġfor Ġthe Ġcomp lication Ġsingle Ġt apped ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ SuppressWarnings (" Synt hetic Accessor ") ĊĠĠĠ Ġ@ Ui Thread ĊĠĠĠ Ġinternal Ġfun Ġon Comp lication Single T apped ( comp lication Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġthe Ġcomp lication Ġis Ġmissing Ġpermissions . ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġcomp lications [ comp lication Id ]?. renderer ?. getId And Data () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( data . comp lication Data . type Ġ== ĠComp lication Type . NO _ PERMISSION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Face Host Api . getContext (). startActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp lication Helper Activity . create Permission Request Helper Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Face Host Api . getContext (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Component Name ( watch Face Host Api . getContext ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdata . comp lication Data . tap Action ?. send () ĊĠĠĠĠĠĠĠ Ġfor Ġ( comp lication Listener Ġin Ġcomp lication Listeners ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Listener . on Comp lication Single T apped ( comp lication Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġ[ Tap Callback ] Ġwhich Ġis Ġcalled Ġwhenever Ġthe Ġuser Ġinteract s Ġwith Ġa Ġcomp lication . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Ui Thread ĊĠĠĠ Ġ@ Suppress Lint (" Executor Registration ") ĊĠĠĠ Ġpublic Ġfun Ġadd Tap Listener ( tap Callback : ĠT ap Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomp lication Listeners . add ( tap Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġa Ġ[ Tap Callback ] Ġpreviously Ġadded Ġby Ġ[ add Tap Listener ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Ui Thread ĊĠĠĠ Ġpublic Ġfun Ġremove Tap Listener ( tap Callback : ĠT ap Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomp lication Listeners . remove ( tap Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Ui Thread ĊĠĠĠ Ġinternal Ġfun Ġdump ( writer : ĠInd ent ing PrintWriter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwriter . println (" Comp lications Manager :") ĊĠĠĠĠĠĠĠ Ġwriter . increase Indent () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( _, Ġcomp lication ) Ġin Ġcomp lications ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication . dump ( writer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwriter . decrease Indent () ĊĠĠĠ Ġ} Ċ } Ċ