/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġcom . turn dap age . we ar . watch face . watch f aced ark o . service Ċ Ċ import Ġandroid . content .* Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . support . v 4 . content . res . Resources Compat Ċ import Ġandroid . support . we arable . comp lications . Comp lication Data Ċ import Ġandroid . support . we arable . comp lications . System Providers . DAY _ OF _ WEEK Ċ import Ġandroid . support . we arable . comp lications . rendering . Comp lication Drawable Ċ import Ġandroid . support . we arable . watch face . Canvas Watch Face Service Ċ import Ġandroid . support . we arable . watch face . Watch Face Service Ċ import Ġandroid . support . we arable . watch face . Watch Face Style Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroid . view . Surface Holder Ċ import Ġcom . turn dap age . we ar . watch face . watch f aced ark o . R Ċ import Ġcom . turn dap age . we ar . watch face . watch f aced ark o . Settings Util Ċ import Ġcom . turn dap age . we ar . watch face . watch f aced ark o . Text Rect Ċ import Ġcom . turn dap age . we ar . watch face . watch f aced ark o . model . Analog Watch Face Style Ċ import Ġcom . turn dap age . we ar . watch face . watch f aced ark o . model . EMPTY _ IMAGE _ RESOURCE Ċ import Ġorg . w 3 c . dom . Text Ċ Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . time . DayOfWeek Ċ import Ġjava . util . Calendar Ċ import Ġjava . util . Calendar . DAY _ OF _ MONTH Ċ import Ġjava . util . TimeZone Ċ import Ġkotlin . math . round ToInt Ċ /** Ċ Ġ* ĠUpdates Ġrate Ġin Ġmilliseconds Ġfor Ġinteractive Ġmode . ĠWe Ġupdate Ġonce Ġa Ġsecond Ġto Ġadvance Ġthe Ċ Ġ* Ġsecond Ġhand . Ċ Ġ*/ Ċ private Ġconst Ġval ĠINTER ACTIVE _ UPDATE _ RATE _ MS Ġ= Ġ 1 0 0 0 Ċ Ċ /** Ċ Ġ* ĠHandler Ġmessage Ġid Ġfor Ġupdating Ġthe Ġtime Ġperiodically Ġin Ġinteractive Ġmode . Ċ Ġ*/ Ċ private Ġconst Ġval ĠMSG _ UPDATE _ TIME Ġ= Ġ 0 Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġa Ġhelper Ġclass Ġwhich Ġrenders Ġan Ġanalog Ġwatch Ġface Ġbased Ġon Ġa Ġdata Ġobject Ġpassed Ġin Ċ Ġ* Ġrepresenting Ġthe Ġstyle . ĠThe Ġclass Ġimplements Ġall Ġbest Ġpractices Ġfor Ġwatch Ġfaces , Ġso Ġthe Ċ Ġ* Ġdeveloper Ġcan Ġjust Ġfocus Ġon Ġdesign ing Ġthe Ġwatch Ġface Ġthey Ġwant . Ċ Ġ* Ċ Ġ* ĠAn alog Ġwatch Ġface Ġwith Ġa Ġtick ing Ġsecond Ġhand . ĠIn Ġambient Ġmode , Ġthe Ġsecond Ġhand Ġisn 't Ċ Ġ* Ġshown . ĠOn Ġdevices Ġwith Ġlow - bit Ġambient Ġmode , Ġthe Ġhands Ġare Ġdrawn Ġwithout Ġanti - alias ing Ġin Ġambient Ċ Ġ* Ġmode . ĠThe Ġwatch Ġface Ġis Ġdrawn Ġwith Ġless Ġcontrast Ġin Ġmute Ġmode . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠImport ant ĠNote : ĠBecause Ġwatch Ġface Ġapps Ġdo Ġnot Ġhave Ġa Ġdefault ĠActivity Ġin Ċ Ġ* Ġtheir Ġproject , Ġyou Ġwill Ġneed Ġto Ġset Ġyour ĠConfigur ations Ġto Ċ Ġ* Ġ" Do Ġnot Ġlaunch ĠActivity " Ġfor Ġboth Ġthe ĠW ear Ġand / or ĠApplication Ġmodules . ĠIf Ġyou Ċ Ġ* Ġare Ġunsure Ġhow Ġto Ġdo Ġthis , Ġplease Ġreview Ġthe Ġ" Run ĠSt arter Ġproject " Ġsection Ċ Ġ* Ġin Ġthe Ċ Ġ* Ġ[ Watch ĠFace ĠCode ĠLab ]( https :// code labs . developers . google . com / code labs / watch face / index . html # 0 ) Ċ Ġ*/ Ċ abstract Ġclass ĠAbstract Kotlin Watch Face Ġ: ĠCanvas Watch Face Service () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġanalog Watch Face Style : ĠAn alog Watch Face Style ĊĊĠĠĠ Ġprivate Ġval Ġcomp lication Id 1 : ĠInt Ġ= Ġ 1 0 1 ĊĠĠĠ Ġprivate Ġval Ġcomp lication Id 2 : ĠInt Ġ= Ġ 1 0 2 ĊĠĠĠ Ġprivate Ġval Ġcomp lication Id 3 : ĠInt Ġ= Ġ 1 0 3 ĊĊĠĠĠ Ġprivate Ġval Ġcomp lication Ids : ĠInt Array Ġ= Ġint ArrayOf ( comp lication Id 1 , Ġcomp lication Id 2 , Ġcomp lication Id 3 ) ĊĊĠĠĠ Ġabstract Ġfun Ġget Watch Face Style (): Analog Watch Face Style ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Engine (): ĠEngine Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠEngine () ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġprivate Ġclass ĠEngine Handler ( reference : ĠAbstract Kotlin Watch Face . Engine ) Ġ: ĠHandler () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġweak Reference : ĠWeak Reference < Abstract Kotlin Watch Face . Engine > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeak Reference ( reference ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġengine Ġ= Ġweak Reference . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( engine Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( msg . what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMSG _ UPDATE _ TIME Ġ-> Ġengine . handle UpdateTime Message () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠEngine Ġ: ĠCanvas Watch Face Service . Engine () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġcalendar : ĠCalendar ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġregistered TimeZone Receiver Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmute Mode : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcenter X : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcenter Y : ĠFloat Ġ= Ġ 0 F ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsecond Hand Length Ratio : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġminute Hand Length Ratio : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġhour Hand Length Ratio : ĠFloat Ġ= Ġ 0 F ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġhour Hand Width : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġhour Hand Height : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġhour Offset : ĠFloat Ġ= Ġ 0 F ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġminute Hand Width : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġminute Hand Height : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġminute Offset : ĠFloat Ġ= Ġ 0 F ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġhour Hand Drawable : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġminute Hand Drawable : ĠDrawable ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġhour Paint : ĠPaint ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġminute Paint : ĠPaint ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġsecond Paint : ĠPaint ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġtick And Circle Paint : ĠPaint ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġcircle Paint : ĠPaint ĊĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġdate Paint : ĠPaint ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġtext Paint : ĠPaint ĊĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġbackground Paint : ĠPaint ĊĠĠĠĠĠĠĠ Ġ// ĠBest Ġpractice Ġis Ġto Ġalways Ġuse Ġblack Ġfor Ġwatch Ġface Ġin Ġambient Ġmode Ġ( s aves Ġbattery ĊĠĠĠĠĠĠĠ Ġ// Ġand Ġprevents Ġburn - in . ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbackground Ambient Paint : Paint Ġ= ĠPaint (). apply Ġ{ Ġcolor Ġ= ĠColor . BLACK Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġbackground Image Enabled : Boolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġbackground Bitmap : ĠBitmap ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġgray Background Bitmap : ĠBitmap ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġambient : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlow Bit Ambient : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġburn In Protection : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/* ĠHandler Ġto Ġupdate Ġthe Ġtime Ġonce Ġa Ġsecond Ġin Ġinteractive Ġmode . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġupdate Time Handler Ġ= ĠEngine Handler ( this ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication Width Ratio 1 : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication Height Ratio 1 : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication X Pos 1 : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication Y Pos 1 : ĠFloat Ġ= Ġ 0 F ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication Width Ratio 2 : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication Height Ratio 2 : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication X Pos 2 : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication Y Pos 2 : ĠFloat Ġ= Ġ 0 F ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication Width Ratio 3 : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication Height Ratio 3 : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication X Pos 3 : ĠFloat Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcomp lication Y Pos 3 : ĠFloat Ġ= Ġ 0 F ĊĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġcomp lication Data Sparse Array : ĠSparse Array < Comp lication Data ?> ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġcomp lication Drawable Sparse Array : ĠSparse Array < Comp lication Drawable ?> ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtime Zone Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . time Zone Ġ= ĠTime Zone . getDefault () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( holder : ĠSurface Holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( holder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style Ġ= Ġget Watch Face Style () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Watch Face Style ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWatch Face Style . Builder ( this @ Abstract Kotlin Watch Face ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Accept s Tap Events ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStatus Bar Gravity ( an alog Watch Face Style . watch Face Style . status Gravity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar Ġ= ĠCalendar . getInstance () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize Background () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize Watch Face () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize Comp lications () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinitialize Background () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Image Enabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Background Image . background Image Resource Ġ!= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEMPTY _ IMAGE _ RESOURCE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( background Image Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Bitmap Ġ= ĠBitmap Factory . decode Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Background Image . background Image Resource ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinitialize Comp lications () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Paint . color Ġ= Ġanalog Watch Face Style . watch Face Colors . highlight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype face Ġ= ĠResources Compat . getFont ( application Context , ĠR . font . fr ank _ know s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Paint . type face Ġ= Ġtype face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Paint . text Size Ġ= Ġ 4 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Comp lication 2 . title Type face Ġ!= ĠEMPTY _ IMAGE _ RESOURCE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . type face Ġ= ĠResources Compat . getFont ( application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Comp lication 2 . title Type face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . text Size Ġ= Ġ 1 8 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . textAlign Ġ= ĠPaint . Align . CENTER ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Width Ratio 1 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 1 . width Ratio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Height Ratio 1 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 1 . height Ratio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication X Pos 1 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 1 . x Pos ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Y Pos 1 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 1 . y Pos ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Width Ratio 2 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 2 . width Ratio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Height Ratio 2 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 2 . height Ratio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication X Pos 2 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 2 . x Pos ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Y Pos 2 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 2 . y Pos ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Width Ratio 3 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 3 . width Ratio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Height Ratio 3 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 3 . height Ratio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication X Pos 3 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 3 . x Pos ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Y Pos 3 Ġ= Ġanalog Watch Face Style . watch Face Comp lication 3 . y Pos ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Data Sparse Array Ġ= ĠSparse Array ( comp lication Ids . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomp lication Drawable 1 Ġ= ĠComp lication Drawable ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomp lication Drawable 2 Ġ= ĠComp lication Drawable ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomp lication Drawable 3 Ġ= ĠComp lication Drawable ( application Context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 1 . set BackgroundColor Active ( an alog Watch Face Style . watch Face Colors . comp lication ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 1 . set BorderColor Active ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 1 . set Highlight Color Active ( an alog Watch Face Style . watch Face Colors . highlight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 1 . setTextColor Active ( an alog Watch Face Style . watch Face Colors . main ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 1 . setTextColor Ambient ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 1 . setTitle Type face Active ( text Paint . type face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 1 . setTitle Type face Ambient ( text Paint . type face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 1 . setIcon Color Ambient ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 1 . setImage Color Filter Ambient ( get Black And White Color Filter ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 2 . set BackgroundColor Active ( an alog Watch Face Style . watch Face Colors . comp lication ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 2 . set BorderColor Active ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 2 . set Highlight Color Active ( an alog Watch Face Style . watch Face Colors . highlight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 2 . setTextColor Active ( an alog Watch Face Style . watch Face Colors . main ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 2 . setTextColor Ambient ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 2 . setTitle Type face Active ( text Paint . type face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 2 . setTitle Type face Ambient ( text Paint . type face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 2 . setIcon Color Ambient ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 2 . setImage Color Filter Ambient ( get Black And White Color Filter ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 3 . set BackgroundColor Active ( an alog Watch Face Style . watch Face Colors . comp lication ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 3 . set BorderColor Active ( Color . TRANSP ARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 3 . set Highlight Color Active ( an alog Watch Face Style . watch Face Colors . highlight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 3 . setTextColor Active ( an alog Watch Face Style . watch Face Colors . main ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 3 . setTextColor Ambient ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 3 . setTitle Type face Active ( text Paint . type face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 3 . setTitle Type face Ambient ( text Paint . type face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 3 . setIcon Color Ambient ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable 3 . setImage Color Filter Ambient ( get Black And White Color Filter ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable Sparse Array Ġ= ĠSparse Array ( comp lication Ids . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable Sparse Array . put ( comp lication Id 1 , Ġcomp lication Drawable 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable Sparse Array . put ( comp lication Id 2 , Ġcomp lication Drawable 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable Sparse Array . put ( comp lication Id 3 , Ġcomp lication Drawable 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Active Comp lications ( comp lication Id 1 , Ġcomp lication Id 2 , Ġcomp lication Id 3 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Component Ġ= ĠComponent Name ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . google . android . we arable . app ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . google . android . clock work . home . comp lications . providers . Day OfMonth Provider Service " Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Comp lication Provider ( DAY _ OF _ WEEK , Ġdate Component , ĠComp lication Data . TYPE _ RAN GED _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Component Ġ= ĠComponent Name ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . google . android . we arable . app ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . google . android . clock work . home . comp lications . providers . DAY _ OF _ WEEK " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Comp lication 1 . default Provider Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Provider Service Ġ= ĠComponent Name ( application Context , Ġanalog Watch Face Style . watch Face Comp lication 1 . default Provider !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Comp lication 1 . supported Types . contains ( Comp lication Data . TYPE _ LONG _ TEXT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Comp lication Provider ( comp lication Id 1 , Ġdefault Provider Service , ĠComp lication Data . TYPE _ LONG _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Comp lication Provider ( comp lication Id 1 , Ġdefault Provider Service , ĠComp lication Data . TYPE _ SHORT _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Comp lication 2 . default Provider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Provider Service Ġ= ĠComponent Name ( application Context , Ġanalog Watch Face Style . watch Face Comp lication 2 . default Provider !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Comp lication Provider ( comp lication Id 2 , Ġdefault Provider Service , ĠComp lication Data . TYPE _ LONG _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Comp lication 3 . default Provider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Provider Service Ġ= ĠComponent Name ( application Context , Ġanalog Watch Face Style . watch Face Comp lication 3 . default Provider !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Comp lication 3 . supported Types . contains ( Comp lication Data . TYPE _ LONG _ TEXT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Comp lication Provider ( comp lication Id 3 , Ġdefault Provider Service , ĠComp lication Data . TYPE _ LONG _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Comp lication Provider ( comp lication Id 3 , Ġdefault Provider Service , ĠComp lication Data . TYPE _ SHORT _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Black And White Color Filter (): ĠColor Filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Matrix : ĠFloat Array Ġ= Ġfloat ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 3 3 f , Ġ 0 . 3 3 f , Ġ 0 . 3 3 f , Ġ 0 f , Ġ 5 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 3 3 f , Ġ 0 . 3 3 f , Ġ 0 . 3 3 f , Ġ 0 f , Ġ 5 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 3 3 f , Ġ 0 . 3 3 f , Ġ 0 . 3 3 f , Ġ 0 f , Ġ 5 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , Ġ 0 f , Ġ 0 f , Ġ 1 f , Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ ĠColor Matrix Color Filter ( color Matrix ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Un read Count Changed ( count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinitialize Watch Face () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhour Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġanalog Watch Face Style . watch Face Colors . main ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġanalog Watch Face Style . watch Face Dimensions . hour Hand Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġminute Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġanalog Watch Face Style . watch Face Colors . main ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġanalog Watch Face Style . watch Face Dimensions . minute Hand Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġanalog Watch Face Style . watch Face Colors . highlight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġanalog Watch Face Style . watch Face Dimensions . second Hand Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtick And Circle Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġanalog Watch Face Style . watch Face Colors . tick Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġanalog Watch Face Style . watch Face Dimensions . second Hand Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġanalog Watch Face Style . watch Face Colors . main ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġanalog Watch Face Style . watch Face Dimensions . second Hand Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġanalog Watch Face Style . watch Face Colors . background ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Time Handler . remove Messages ( MSG _ UPDATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Properties Changed ( properties : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Properties Changed ( properties ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlow Bit Ambient Ġ= Ġproperties . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWatch Face Service . PROPERTY _ LOW _ BIT _ AM BI ENT , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġburn In Protection Ġ= Ġproperties . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWatch Face Service . PROPERTY _ B URN _ IN _ PRO TE CTION , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Comp lication Data Update ( watch Face Comp lication Id : ĠInt , Ġdata : ĠComp lication Data ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Data Sparse Array . put ( watch Face Comp lication Id , Ġdata ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomp lication Drawable : ĠComp lication Drawable ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable Sparse Array . get ( watch Face Comp lication Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable ?. set Comp lication Data ( data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonTap Command ( tap Type : ĠInt , Ġx : ĠInt , Ġy : ĠInt , Ġevent Time : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Watch Face Service . T AP _ TYPE _ T AP Ġ== Ġtap Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 .. ( comp lication Ids . size Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomp lication Id Ġ= Ġcomp lication Ids [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomp lication Drawable : ĠComp lication Drawable ? Ġ= Ġcomp lication Drawable Sparse Array . get ( comp lication Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccessful Tap : ĠBoolean ? Ġ= Ġcomp lication Drawable ?. on Tap ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( successful Tap !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Time Tick () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Time Tick () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ambient Mode Changed ( in Ambient Mode : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Ambient Mode Changed ( in Ambient Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġambient Ġ= Ġin Ambient Mode Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Watch Hand Style () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Comp lication Style () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġand Ġtrigger Ġwhether Ġor Ġnot Ġtimer Ġshould Ġbe Ġrunning Ġ( only ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġactive Ġmode ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Timer () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġupdate Comp lication Style () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 .. ( comp lication Ids . size Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomp lication Drawable Ġ= Ġcomp lication Drawable Sparse Array . get ( comp lication Ids [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable ?. set In Ambient Mode ( ambient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Tag "," updating Ġcomp lication Ġambient Ġwith Ġid Ġ${ comp lication Ids [ i ]} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġupdate Watch Hand Style () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ambient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtick And Circle Paint . color Ġ= Ġanalog Watch Face Style . watch Face Colors . tick Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Paint . color Ġ= ĠColor . WHITE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Paint . is Anti Alias Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Paint . is Anti Alias Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Paint . is Anti Alias Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtick And Circle Paint . is Anti Alias Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Paint . is Anti Alias Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Paint . clear Shadow Layer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Paint . clear Shadow Layer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Paint . clear Shadow Layer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtick And Circle Paint . clear Shadow Layer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Paint . clear Shadow Layer () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Paint . color Ġ= Ġanalog Watch Face Style . watch Face Colors . main ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Paint . color Ġ= Ġanalog Watch Face Style . watch Face Colors . main ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Paint . color Ġ= Ġanalog Watch Face Style . watch Face Colors . highlight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtick And Circle Paint . color Ġ= Ġanalog Watch Face Style . watch Face Colors . tick Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Paint . color Ġ= Ġanalog Watch Face Style . watch Face Colors . main ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtick And Circle Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Paint . is Anti Alias Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Paint . set Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Paint . set Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Paint . set Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtick And Circle Paint . set Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Paint . set Shadow Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . shadow Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Colors . shadow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Inter ruption Filter Changed ( inter ruption Filter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Inter ruption Filter Changed ( inter ruption Filter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġin Mute Mode Ġ= Ġinter ruption Filter Ġ== ĠWatch Face Service . INTERRUP TION _ FILTER _ NONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠDim Ġdisplay Ġin Ġmute Ġmode . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mute Mode Ġ!= Ġin Mute Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmute Mode Ġ= Ġin Mute Mode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Paint . alpha Ġ= Ġif Ġ( in Mute Mode ) Ġ 1 0 0 Ġelse Ġ 2 5 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Paint . alpha Ġ= Ġif Ġ( in Mute Mode ) Ġ 1 0 0 Ġelse Ġ 2 5 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Paint . alpha Ġ= Ġif Ġ( in Mute Mode ) Ġ 8 0 Ġelse Ġ 2 5 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Changed ( holder : ĠSurface Holder , Ġformat : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Surface Changed ( holder , Ġformat , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠFind Ġthe Ġcoordinates Ġof Ġthe Ġcenter Ġpoint Ġon Ġthe Ġscreen , Ġand Ġignore Ġthe Ġwindow ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġin sets , Ġso Ġthat , Ġon Ġround Ġw atches Ġwith Ġa Ġ" ch in ", Ġthe Ġwatch Ġface Ġis Ġcentered Ġon Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġentire Ġscreen , Ġnot Ġjust Ġthe Ġusable Ġportion . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X Ġ= Ġwidth Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Y Ġ= Ġheight Ġ/ Ġ 2 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠCalculate Ġlengths Ġof Ġdifferent Ġhands Ġbased Ġon Ġwatch Ġscreen Ġsize . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Hand Length Ratio Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center X Ġ* Ġanalog Watch Face Style . watch Face Dimensions . second Hand Radius Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminute Hand Length Ratio Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center X Ġ* Ġanalog Watch Face Style . watch Face Dimensions . minute Hand Radius Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhour Hand Length Ratio Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center X Ġ* Ġanalog Watch Face Style . watch Face Dimensions . hour Hand Radius Ratio ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠCalculate Ġthe Ġsize Ġof Ġthe Ġcomp lications ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Width Ratio 1 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( width Ġ* Ġanalog Watch Face Style . watch Face Comp lication 1 . width Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Height Ratio 1 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( height Ġ* Ġanalog Watch Face Style . watch Face Comp lication 1 . height Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication X Pos 1 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( width Ġ* Ġanalog Watch Face Style . watch Face Comp lication 1 . x Pos ) Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication Width Ratio 1 Ġ/ Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Y Pos 1 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( height Ġ* Ġanalog Watch Face Style . watch Face Comp lication 1 . y Pos ) Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication Height Ratio 1 Ġ/ Ġ 2 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Width Ratio 2 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( width Ġ* Ġanalog Watch Face Style . watch Face Comp lication 2 . width Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Height Ratio 2 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( height Ġ* Ġanalog Watch Face Style . watch Face Comp lication 2 . height Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication X Pos 2 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( width Ġ* Ġanalog Watch Face Style . watch Face Comp lication 2 . x Pos ) Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication Width Ratio 2 Ġ/ Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Y Pos 2 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( height Ġ* Ġanalog Watch Face Style . watch Face Comp lication 2 . y Pos ) Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication Height Ratio 2 Ġ/ Ġ 2 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Width Ratio 3 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( width Ġ* Ġanalog Watch Face Style . watch Face Comp lication 3 . width Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Height Ratio 3 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( height Ġ* Ġanalog Watch Face Style . watch Face Comp lication 3 . height Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication X Pos 3 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( width Ġ* Ġanalog Watch Face Style . watch Face Comp lication 3 . x Pos ) Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication Width Ratio 3 Ġ/ Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Y Pos 3 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( height Ġ* Ġanalog Watch Face Style . watch Face Comp lication 3 . y Pos ) Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication Height Ratio 3 Ġ/ Ġ 2 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds 1 Ġ= ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication X Pos 1 . round ToInt (), Ġ// ĠLeft ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Y Pos 1 . round ToInt (), Ġ// ĠTop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication X Pos 1 Ġ+ Ġcomp lication Width Ratio 1 ). round ToInt (), Ġ// ĠRight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication Y Pos 1 Ġ+ Ġcomp lication Height Ratio 1 ). round ToInt ()) Ġ// ĠBottom ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable Sparse Array . get ( comp lication Ids [ 0 ]) ?. bounds Ġ= Ġbounds 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds 2 Ġ= ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication X Pos 2 . round ToInt (), Ġ// ĠLeft ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Y Pos 2 . round ToInt (), Ġ// ĠTop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication X Pos 2 Ġ+ Ġcomp lication Width Ratio 2 ). round ToInt (), Ġ// ĠRight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication Y Pos 2 Ġ+ Ġcomp lication Height Ratio 2 ). round ToInt ()) Ġ// ĠBottom ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable Sparse Array . get ( comp lication Ids [ 1 ]) ?. bounds Ġ= Ġbounds 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds 3 Ġ= ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication X Pos 3 . round ToInt (), Ġ// ĠLeft ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Y Pos 3 . round ToInt (), Ġ// ĠTop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication X Pos 3 Ġ+ Ġcomp lication Width Ratio 3 ). round ToInt (), Ġ// ĠRight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( comp lication Y Pos 3 Ġ+ Ġcomp lication Height Ratio 3 ). round ToInt ()) Ġ// ĠBottom ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable Sparse Array . get ( comp lication Ids [ 2 ]) ?. bounds Ġ= Ġbounds 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Tag ", Ġ" Set ĠBounds ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( background Image Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠScale Ġloaded Ġbackground Ġimage Ġ( more Ġefficient ) Ġif Ġsurface Ġdimensions Ġchange . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġwidth . toFloat () Ġ/ Ġbackground Bitmap . width . toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Bitmap Ġ= ĠBitmap . create Scaled Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Bitmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( background Bitmap . width Ġ* Ġscale ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( background Bitmap . height Ġ* Ġscale ). toInt (), Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠCreate Ġa Ġgray Ġversion Ġof Ġthe Ġimage Ġonly Ġif Ġit Ġwill Ġlook Ġnice Ġon Ġthe Ġdevice Ġin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġambient Ġmode . ĠThat Ġmeans Ġwe Ġdon 't Ġwant Ġdevices Ġthat Ġsupport Ġburn - in ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġprotection Ġ( sl ight Ġmov ements Ġin Ġpixels , Ġnot Ġgreat Ġfor Ġimages Ġgoing Ġall Ġthe Ġway ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġto Ġedges ) Ġand Ġlow Ġambient Ġmode Ġ( de grade s Ġimage Ġquality ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAlso , Ġif Ġyour Ġwatch Ġface Ġwill Ġknow Ġabout Ġall Ġimages Ġahead Ġof Ġtime Ġ( users Ġaren 't ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġselecting Ġtheir Ġown Ġphotos Ġfor Ġthe Ġwatch Ġface ), Ġit Ġwill Ġbe Ġmore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġefficient Ġto Ġcreate Ġa Ġblack / white Ġversion Ġ( png , Ġetc .) Ġand Ġload Ġthat Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġyou Ġneed Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! burn In Protection Ġ&& Ġ! low Bit Ambient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Gray Background Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Hour Hand . drawable Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġanalog Watch Face Style . watch Face Hour Hand . offset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Hand Drawable Ġ= Ġget Drawable ( an alog Watch Face Style . watch Face Hour Hand . drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Hand Drawable ?. color Filter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPort er D uff Color Filter ( an alog Watch Face Style . watch Face Colors . main , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPort er D uff . Mode . MULTI PLY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Width Ġ= Ġhour Hand Drawable ?. intrinsic Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Height Ġ= Ġhour Hand Drawable ?. intrinsic Height ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Height Ġ= Ġd Height ?. minus ( d Height . times ( offset )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġout Height ?. div ( width Ġ* Ġanalog Watch Face Style . watch Face Dimensions . hour Hand Radius Ratio ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Tag ", Ġ" Out ĠHeight : Ġ$ out Height ĠWidth : Ġ$ width ĠHour ĠScale : Ġ$ scale ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Hand Width Ġ= Ġd Width !!. times ( scale !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Hand Height Ġ= Ġd Height . times ( scale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Offset Ġ= Ġhour Hand Height Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Comp lication 1 . default Provider Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Provider Service Ġ= ĠComponent Name (" com . google . android . we arable . app ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . google . android . clock work . home . comp lications . providers . Day OfMonth Provider Service " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Comp lication Provider ( comp lication Id 1 , Ġdefault Provider Service , ĠComp lication Data . TYPE _ SHORT _ TEXT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Comp lication 2 . default Provider Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Provider Service 1 Ġ= ĠComponent Name (" com . google . android . we arable . app ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . google . android . clock work . home . comp lications . providers . Battery Provider Service " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Comp lication Provider ( comp lication Id 2 , Ġdefault Provider Service 1 , ĠComp lication Data . TYPE _ SHORT _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Minute Hand . drawable Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġanalog Watch Face Style . watch Face Minute Hand . offset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Hand Drawable Ġ= Ġget Drawable ( an alog Watch Face Style . watch Face Minute Hand . drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Hand Drawable ?. color Filter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPort er D uff Color Filter ( an alog Watch Face Style . watch Face Colors . main , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPort er D uff . Mode . MULTI PLY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Width Ġ= Ġminute Hand Drawable ?. intrinsic Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Height Ġ= Ġminute Hand Drawable ?. intrinsic Height ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Height Ġ= Ġd Height ?. minus ( d Height . times ( offset )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġout Height ?. div ( width Ġ* Ġanalog Watch Face Style . watch Face Dimensions . minute Hand Radius Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Tag ", Ġ" Out ĠHeight : Ġ$ out Height ĠWidth : Ġ$ width ĠMin ute ĠScale : Ġ$ scale ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Hand Width Ġ= Ġd Width !!. times ( scale !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Hand Height Ġ= Ġd Height . times ( scale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Offset Ġ= Ġminute Hand Height Ġ* Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinit Gray Background Bitmap () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgray Background Bitmap Ġ= ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Bitmap . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Bitmap . height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . Config . ARGB _ 8 8 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( gray Background Bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgray Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Matrix Ġ= ĠColor Matrix () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Matrix . set Sat uration ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠColor Matrix Color Filter ( color Matrix ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgray Paint . color Filter Ġ= Ġfilter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( background Bitmap , Ġ 0 f , Ġ 0 f , Ġgray Paint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas , Ġbounds : ĠRect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . time In Millis Ġ= Ġnow ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Background ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Comp lications ( canvas , Ġnow ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Watch Face ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdraw Background ( canvas : ĠCanvas ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ambient Ġ&& Ġ( low Bit Ambient Ġ|| Ġburn In Protection )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Color ( background Ambient Paint . color ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ambient Ġ&& Ġbackground Image Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( gray Background Bitmap , Ġ 0 f , Ġ 0 f , Ġbackground Ambient Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( background Image Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( background Bitmap , Ġ 0 f , Ġ 0 f , Ġbackground Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Color ( background Paint . color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdraw Watch Face ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDraw Ġticks . ĠUsually Ġyou Ġwill Ġwant Ġto Ġb ake Ġthis Ġdirectly Ġinto Ġthe Ġphoto , Ġbut Ġin ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġcases Ġwhere Ġyou Ġwant Ġto Ġallow Ġusers Ġto Ġselect Ġtheir Ġown Ġphotos , Ġthis Ġdynamically ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġcreates Ġthem Ġon Ġtop Ġof Ġthe Ġphoto . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinner Tick Radius Ġ= Ġcenter X Ġ- Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġouter Tick Radius Ġ= Ġcenter X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tick Index Ġin Ġ 0 .. 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtick Rot Ġ= Ġ( tick Index . toDouble () Ġ* ĠMath . PI Ġ* Ġ 2 . 0 Ġ/ Ġ 1 2 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinner X Ġ= ĠMath . sin ( tick Rot . toDouble ()). toFloat () Ġ* Ġinner Tick Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinner Y Ġ= Ġ(- Math . cos ( tick Rot . toDouble ())). toFloat () Ġ* Ġinner Tick Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġouter X Ġ= ĠMath . sin ( tick Rot . toDouble ()). toFloat () Ġ* Ġouter Tick Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġouter Y Ġ= Ġ(- Math . cos ( tick Rot . toDouble ())). toFloat () Ġ* Ġouter Tick Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X Ġ+ Ġinner X , Ġcenter Y Ġ+ Ġinner Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X Ġ+ Ġouter X , Ġcenter Y Ġ+ Ġouter Y , Ġtick And Circle Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Width Ġ= Ġcenter X Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Height Ġ= Ġcenter Y Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Bounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Paint . getText Bounds (" 3 ", Ġ 0 , Ġ 1 , Ġtext Bounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Width Ġ= Ġtext Bounds . width (). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Height Ġ= Ġtext Bounds . height (). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Paint . getText Bounds (" 1 2 ", Ġ 0 , Ġ 2 , Ġtext Bounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Offset Ġ= Ġ( text Bounds . width () Ġ/ Ġ 2 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġ 1 2 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( isIn Ambient Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Paint . color Ġ= Ġanalog Watch Face Style . watch Face Colors . highlight ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdraw Ġout Ġthe Ġnumber Ġticks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Style . top Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text (" 1 2 ", Ġcenter X Ġ- Ġtop Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Height Ġ+ Ġoffset , Ġdate Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Style . right Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text (" 3 ", Ġscreen Width Ġ- Ġtext Width Ġ- Ġoffset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Y Ġ+ Ġtext Height Ġ/ Ġ 2 , Ġdate Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Style . bottom Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text (" 6 ", Ġcenter X Ġ- Ġtext Width Ġ/ Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Height Ġ- Ġoffset , Ġdate Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( an alog Watch Face Style . watch Face Style . left Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text (" 9 ", Ġoffset , Ġcenter Y Ġ+ Ġtext Height Ġ/ Ġ 2 , Ġdate Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThese Ġcalculations Ġreflect Ġthe Ġrotation Ġin Ġdegrees Ġper Ġunit Ġof Ġtime , Ġe . g ., ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ 3 6 0 Ġ/ Ġ 6 0 Ġ= Ġ 6 Ġand Ġ 3 6 0 Ġ/ Ġ 1 2 Ġ= Ġ 3 0 . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . get ( Calendar . SECOND ) Ġ+ Ġcalendar . get ( Calendar . MILLI SECOND ) Ġ/ Ġ 1 0 0 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseconds Rotation Ġ= Ġseconds Ġ* Ġ 6 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminutes Rotation Ġ= Ġcalendar . get ( Calendar . MINUTE ) Ġ* Ġ 6 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhour Hand Offset Ġ= Ġcalendar . get ( Calendar . MINUTE ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhours Rotation Ġ= Ġcalendar . get ( Calendar . HOUR ) Ġ* Ġ 3 0 Ġ+ Ġhour Hand Offset ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠSave Ġthe Ġcanvas Ġstate Ġbefore Ġwe Ġcan Ġbegin Ġto Ġrotate Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . save () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance From Center To Ar ms Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . inner Circle Radius Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . inner Circle To Ar ms Distance ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . rotate ( hours Rotation , Ġcenter X , Ġcenter Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( hour Hand Drawable Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Y Ġ- Ġdistance From Center To Ar ms , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Y Ġ- Ġhour Hand Length Ratio , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Hand Drawable ?. bounds ?. set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center X Ġ- Ġ( hour Hand Width / 2 )). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center Y Ġ- Ġhour Hand Height Ġ+ Ġhour Offset ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center X Ġ+ Ġ( hour Hand Width / 2 )). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center Y Ġ+ Ġhour Offset ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Hand Drawable ?. draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . rotate ( minutes Rotation Ġ- Ġhours Rotation , Ġcenter X , Ġcenter Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( minute Hand Drawable Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Y Ġ- Ġdistance From Center To Ar ms , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Y Ġ- Ġminute Hand Length Ratio , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Hand Drawable ?. bounds ?. set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center X Ġ- Ġ( minute Hand Width / 2 )). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center Y Ġ- Ġminute Hand Height Ġ+ Ġminute Offset ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center X Ġ+ Ġ( minute Hand Width / 2 )). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( center Y Ġ+ Ġminute Offset ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminute Hand Drawable ?. draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠEnsure Ġthe Ġ" seconds " Ġhand Ġis Ġdrawn Ġonly Ġwhen Ġwe Ġare Ġin Ġinteractive Ġmode . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠOtherwise , Ġwe Ġonly Ġupdate Ġthe Ġwatch Ġface Ġonce Ġa Ġminute . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ambient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . rotate ( seconds Rotation Ġ- Ġminutes Rotation , Ġcenter X , Ġcenter Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Y Ġ- Ġdistance From Center To Ar ms , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Y Ġ- Ġsecond Hand Length Ratio , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Paint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalog Watch Face Style . watch Face Dimensions . inner Circle Radius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcircle Paint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠRestore Ġthe Ġcanvas ' Ġoriginal Ġorientation . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . restore () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdraw Comp lications ( canvas : ĠCanvas , ĠcurrentTime Millis : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! Settings Util . Get Hide Comp lications ( application Context ) Ġ|| Ġ! isIn Ambient Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcomp lication Id : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcomp lication Drawable : ĠComp lication Drawable ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. ( comp lication Ids . size Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Id Ġ= Ġcomp lication Ids [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomp lication Data : ĠComp lication Data ? Ġ= Ġcomp lication Data Sparse Array . get ( comp lication Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comp lication Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable Ġ= Ġcomp lication Drawable Sparse Array . get ( comp lication Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comp lication Id Ġ== Ġcomp lication Id 1 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Data . type Ġ== ĠComp lication Data . TYPE _ LONG _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* comp lication Data . long Title Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Data . long Title . getText ( base Context , ĠcurrentTime Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ== Ġ" That Ġis Ġwhen \ nt he Ġworld Ġwill Ġend ") */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Dark o Long Text ( comp lication Drawable , Ġcomp lication Data , ĠcurrentTime Millis , Ġcanvas ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable ?. draw ( canvas , ĠcurrentTime Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdraw Dark o Long Text ( comp lication Drawable : ĠComp lication Drawable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Data : ĠComp lication Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentTime Millis : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( comp lication Drawable ?. bounds Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Rect Ġ= ĠText Rect ( date Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtitle Text : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( comp lication Data . long Title Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Text Ġ= Ġcomp lication Data . long Title . getText ( application Context , ĠcurrentTime Millis ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( comp lication Data . short Title Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Text Ġ= Ġcomp lication Data . short Title . getText ( application Context , ĠcurrentTime Millis ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġ( comp lication Drawable . bounds . height (). toFloat ()/ 2 ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* if (! comp lication Data . long Title . getText ( base Context , ĠcurrentTime Millis ). toString (). isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ! comp lication Data . short Title . getText ( base Context , ĠcurrentTime Millis ). toString (). isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġheight . toFloat (). div ( 2 ). toInt () */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġ( comp lication Drawable . bounds . width (). toFloat () Ġ* Ġ 1 . 6 f ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Rect . prepare ( comp lication Data . long Text . getText ( application Context , ĠcurrentTime Millis ). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , Ġ// Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight ) Ġ// Ġheight ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġ( comp lication Drawable . bounds . left Ġ- Ġ( comp lication Drawable . bounds . width (). toFloat () Ġ/ Ġ 4 )). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Rect . draw ( canvas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft , Ġ// Ġleft ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable . bounds . top ) Ġ// Ġtop ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( title Text Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Rect Ġ= ĠText Rect ( text Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Rect . prepare ( title Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Rect . draw ( canvas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( left Ġ* Ġ 1 . 2 5 f ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomp lication Drawable . bounds . top Ġ+ Ġheight ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdraw Multi Line Text ( str : ĠString , Ġx : ĠFloat , Ġy : ĠFloat , Ġpaint : ĠPaint , Ġcanvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġstr . split ("\ n ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtxt Size Ġ= Ġ- paint . as cent () Ġ+ Ġpaint . desc ent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( paint . style Ġ== ĠPaint . Style . FILL _ AND _ ST RO KE Ġ|| Ġpaint . style Ġ== ĠPaint . Style . ST RO KE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Size Ġ+= Ġpaint . stroke Width Ġ// add Ġstroke Ġwidth Ġto Ġthe Ġtext Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Space Ġ= Ġtxt Size Ġ* Ġ 0 . 2 f Ġ Ġ// default Ġline Ġspacing ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġlines . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( lines [ i ], Ġx , Ġy Ġ+ Ġ( txt Size Ġ+ Ġline Space ) Ġ* Ġi , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Visibility Changed ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Visibility Changed ( visible ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Receiver () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠUpdate Ġtime Ġzone Ġin Ġcase Ġit Ġchanged Ġwhile Ġwe Ġweren 't Ġvisible . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . time Zone Ġ= ĠTime Zone . getDefault () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunregister Receiver () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠCheck Ġand Ġtrigger Ġwhether Ġor Ġnot Ġtimer Ġshould Ġbe Ġrunning Ġ( only Ġin Ġactive Ġmode ). Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Timer () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġregister Receiver () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( registered TimeZone Receiver ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistered TimeZone Receiver Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠIntent Filter ( Intent . ACTION _ TIME ZONE _ CHANGED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Abstract Kotlin Watch Face . register Receiver ( time Zone Receiver , Ġfilter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġunregister Receiver () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! registered TimeZone Receiver ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistered TimeZone Receiver Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Abstract Kotlin Watch Face . unregister Receiver ( time Zone Receiver ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠStarts / stops Ġthe Ġ[. update Time Handler ] Ġtimer Ġbased Ġon Ġthe Ġstate Ġof Ġthe Ġwatch Ġface . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġupdate Timer () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Time Handler . remove Messages ( MSG _ UPDATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Timer Be Running ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Time Handler . send Empty Message ( MSG _ UPDATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġwhether Ġthe Ġ[. update Time Handler ] Ġtimer Ġshould Ġbe Ġrunning . ĠThe Ġtimer ĊĠĠĠĠĠĠĠĠ Ġ* Ġshould Ġonly Ġrun Ġin Ġactive Ġmode . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshould Timer Be Running (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Visible Ġ&& Ġ! ambient ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHandle Ġupdating Ġthe Ġtime Ġperiodically Ġin Ġinteractive Ġmode . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġhandle UpdateTime Message () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Timer Be Running ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ms Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelay Ms Ġ= ĠINTER ACTIVE _ UPDATE _ RATE _ MS Ġ- Ġtime Ms Ġ% ĠINTER ACTIVE _ UPDATE _ RATE _ MS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Time Handler . send Empty Message Delayed ( MSG _ UPDATE _ TIME , Ġdelay Ms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Bitmap From Vector Drawable ( drawable : ĠDrawable ?, Ġwidth : ĠFloat , Ġheight : ĠFloat , Ġhighlight : ĠBoolean ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Int Ġ= Ġ( width / 1 . 2 5 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Int Ġ= Ġ( height / 1 . 2 5 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( width Int , Ġheight Int , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( drawable Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . setBounds ( 0 , Ġ 0 , Ġwidth Int , Ġheight Int ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . color Filter Ġ= ĠPort er D uff Color Filter ( hour Paint . color , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( highlight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Highlight Image ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdo Highlight Image ( src : ĠBitmap ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbm Out Ġ= ĠBitmap . create Bitmap ( src . width Ġ+ Ġ 9 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc . height Ġ+ Ġ 9 6 , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bm Out ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Color ( 0 , ĠPort er D uff . Mode . CLEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpt Blur Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt Blur . mask Filter Ġ= ĠBl ur Mask Filter ( 8 f , ĠBl ur Mask Filter . Blur . NORMAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset XY Ġ= ĠInt Array ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbm Alpha Ġ= Ġsrc . extract Alpha ( pt Blur , Ġoffset XY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpt Alpha Color Ġ= ĠPaint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpt Alpha Color . color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bm Alpha , Ġ( offset XY [ 0 ] Ġ+ Ġ 4 3 ). toFloat (), Ġ( offset XY [ 1 ] Ġ+ Ġ 4 3 ). toFloat (), Ġpt Alpha Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbm Alpha . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( src , Ġ 4 3 f , Ġ 4 3 f , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbm Out ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ