/* Ċ Ġ* Ġ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 . content . Component Name Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . we arable . comp lications . Comp lication Data Ċ import Ġandroidx . annotation . Restrict To Ċ import Ġandroidx . annotation . Ui Thread Ċ import Ġandroidx . we ar . watch face . comp lications . System Data Sources . DataSource Id Ċ import Ġandroidx . we ar . watch face . style . data . User Style WireFormat Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ Ċ /** Ċ Ġ* ĠThe ĠAPI Ġ[ Watch Face Impl ] Ġuses Ġto Ġcommunicate Ġwith Ġthe Ġsystem . Ċ Ġ* Ġ@ hide Ċ Ġ*/ Ċ @ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) Ċ public Ġinterface ĠWatch Face Host Api Ġ{ ĊĠĠĠ Ġ/** ĠReturns Ġthe Ġwatch Ġface 's Ġ[ Context ]. Ġ*/ ĊĠĠĠ Ġpublic Ġfun ĠgetContext (): ĠContext ĊĊĠĠĠ Ġ/** ĠReturns Ġthe ĠUI Ġthread Ġ[ Handler ]. Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget Ui Thread Handler (): ĠHandler ĊĊĠĠĠ Ġ/** ĠReturns Ġthe ĠUI Ġthread Ġ[ Coroutine Scope ]. Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget Ui Thread Coroutine Scope (): ĠCor outine Scope ĊĊĠĠĠ Ġ/** ĠReturns Ġthe ĠWorker Ġthread Ġ[ Handler ]. Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget Background Thread Handler (): ĠHandler ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġinitial Ġuser Ġstyle Ġstored Ġby Ġthe Ġsystem Ġif Ġthere Ġis Ġone Ġor Ġnull Ġotherwise . Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget Initial User Style (): ĠUser Style WireFormat ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates / updates ĠContent Description Labels Ġfor Ġtext - to - speech Ġscreen Ġreaders Ġto Ġmake Ġyour ĊĠĠĠĠ Ġ* Ġ[ Comp lication Slot ] s , Ġbuttons , Ġand Ġany Ġother Ġtext Ġon Ġyour Ġwatch face Ġaccessible . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠEach Ġlabel Ġis Ġa Ġregion Ġof Ġthe Ġscreen Ġin Ġabsolute Ġpixel Ġcoordinates , Ġalong Ġwith ĊĠĠĠĠ Ġ* Ġtime - dependent Ġtext , Ġthe Ġlabels Ġare Ġgenerated Ġfrom Ġdata Ġin Ġ[ Comp lication Slots Manager ], ĊĠĠĠĠ Ġ* Ġ[ Renderer . additional Content Description Labels ], Ġ[ Renderer . screen Bounds ] Ġand ĊĠĠĠĠ Ġ* Ġ[ Renderer . get Main Clock Element Bounds ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġis Ġa Ġfairly Ġexpensive Ġoperation Ġso Ġuse Ġit Ġs paring ly Ġ( e . g . Ġdo Ġnot Ġcall Ġit Ġin ĊĠĠĠĠ Ġ* Ġ` on Draw ()` ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġupdate Content Description Labels () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġcomp lication Slots Ġwhich Ġare Ġactive Ġin Ġthe Ġwatch face . ĠComp lication Slot Ġdata Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġreceived Ġfor Ġthese Ġids . ĠThis Ġis Ġto Ġsupport Ġthe Ġpre - android ĠR Ġflow . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠAny Ġids Ġnot Ġin Ġthe Ġprovided Ġ[ comp lication Slot Ids ] Ġwill Ġbe Ġconsidered Ġinactive . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġcomp lication Ġdata Ġsources Ġand Ġcomp lication Ġdata Ġtypes Ġhave Ġbeen Ġconfigured , Ġthe Ġdata ĊĠĠĠĠ Ġ* Ġreceived Ġwill Ġmatch Ġthe Ġtype Ġchosen Ġby Ġthe Ġuser . ĠIf Ġno Ġcomp lication Ġdata Ġsource Ġhas Ġbeen ĊĠĠĠĠ Ġ* Ġconfigured , Ġdata Ġof Ġtype Ġ[ Comp lication Data . TYPE _ NOT _ CONFIGURE D ] Ġwill Ġbe Ġreceived . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠI ds Ġhere Ġare Ġchosen Ġby Ġthe Ġwatch Ġface Ġto Ġrepresent Ġeach Ġcomp lication Ġand Ġcan Ġbe Ġany ĊĠĠĠĠ Ġ* Ġinteger . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġset Active Comp lication Slots ( comp lication Slot Ids : ĠInt Array ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAccept s Ġa Ġlist Ġof Ġcustom Ġcomp lication Ġdata Ġsources Ġto Ġattempt Ġto Ġset Ġas Ġthe Ġdefault ĊĠĠĠĠ Ġ* Ġcomp lication Ġdata Ġsource Ġfor Ġthe Ġspecified Ġwatch Ġface Ġ[ Comp lication Slot ] Ġid . ĠThe Ġcustom ĊĠĠĠĠ Ġ* Ġcomp lication Ġdata Ġsources Ġare Ġtried Ġin Ġturn , Ġif Ġthe Ġfirst Ġdoesn 't Ġexist Ġthen Ġthe Ġnext Ġone ĊĠĠĠĠ Ġ* Ġis Ġtried Ġand Ġso Ġon . ĠIf Ġnone Ġof Ġthem Ġexist Ġthen Ġthe Ġspecified Ġsystem Ġcomp lication Ġdata ĊĠĠĠĠ Ġ* Ġsource Ġis Ġset Ġas Ġthe Ġdefault Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġwill Ġdo Ġnothing Ġif Ġthe Ġcomp lication Ġdata Ġsources Ġare Ġnot Ġinstalled , Ġor Ġif Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġtype Ġis Ġnot Ġsupported Ġby Ġthe Ġcomp lication Ġdata Ġsources , Ġor Ġif Ġthe Ġuser Ġhas Ġalready Ġselected Ġa ĊĠĠĠĠ Ġ* Ġcomp lication Ġdata Ġsource Ġfor Ġthe Ġ[ Comp lication Slot ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġif Ġthe Ġwatch Ġface Ġhas Ġnot Ġyet Ġbeen Ġgranted Ġthe Ġ` RECEIVE _ COMP LIC ATION _ DATA ` ĊĠĠĠĠ Ġ* Ġpermission , Ġit Ġwill Ġnot Ġbe Ġable Ġto Ġreceive Ġdata Ġfrom Ġthe Ġcomp lication Ġdata Ġsource Ġunless Ġthe ĊĠĠĠĠ Ġ* Ġcomp lication Ġdata Ġsource Ġis Ġfrom Ġthe Ġsame Ġapp Ġpackage Ġas Ġthe Ġwatch Ġface , Ġor Ġthe Ġcomp lication ĊĠĠĠĠ Ġ* Ġdata Ġsource Ġlists Ġthe Ġwatch Ġface Ġas Ġa Ġsafe Ġwatch Ġface . ĠFor Ġsystem Ġcomp lication Ġdata Ġsources ĊĠĠĠĠ Ġ* Ġthat Ġmay Ġbe Ġused Ġbefore Ġyour Ġwatch Ġface Ġhas Ġthe Ġpermission , Ġuse Ġa Ġsafe Ġcomp lication Ġdata ĊĠĠĠĠ Ġ* Ġsource Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA Ġcomp lication Ġdata Ġsource Ġnot Ġsatisf ying Ġthe Ġabove Ġconditions Ġmay Ġstill Ġbe Ġset Ġas Ġa Ġdefault ĊĠĠĠĠ Ġ* Ġusing Ġthis Ġmethod , Ġbut Ġthe Ġwatch Ġface Ġwill Ġreceive Ġplaceholder Ġdata Ġof Ġtype ĊĠĠĠĠ Ġ* Ġ[ Comp lication Data . TYPE _ NO _ PERMISSION ] Ġuntil Ġthe Ġpermission Ġhas Ġbeen Ġgranted . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcomp lication Slot Id ĠThe Ġ[ Comp lication Slot ] Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Sources Ġdata Ġsources ĠThe Ġlist Ġof Ġnon - system Ġcomp lication Ġdata Ġsources Ġto Ġtry Ġin ĊĠĠĠĠ Ġ* Ġorder Ġbefore Ġfalling Ġback Ġto ĊĠĠĠĠ Ġ* Ġfallback System Provider . ĠThis Ġlist Ġmay Ġbe Ġnull . ĊĠĠĠĠ Ġ* Ġ@ param Ġfallback System Provider ĠThe Ġsystem Ġcomp lication Ġdata Ġsource Ġto Ġuse Ġif Ġnone Ġof Ġthe ĊĠĠĠĠ Ġ* Ġcomp lication Ġdata Ġsources Ġcould Ġbe Ġused . ĊĠĠĠĠ Ġ* Ġ@ param Ġtype ĠThe Ġtype Ġof Ġcomp lication Ġdata Ġthat Ġshould Ġbe Ġprovided . ĠMust Ġbe Ġone Ġof Ġthe Ġtypes ĊĠĠĠĠ Ġ* Ġdefined Ġin Ġ[ Comp lication Data ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun ĠsetDefault Comp lication DataSource With Fallback s ( ĊĠĠĠĠĠĠĠ Ġcomp lication Slot Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġdata Sources : ĠList < Component Name > ?, ĊĠĠĠĠĠĠĠ Ġ@ DataSource Id Ġfallback System Provider : ĠInt , ĊĠĠĠĠĠĠĠ Ġtype : ĠInt ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĠS chedules Ġa Ġcall Ġto Ġ[ Renderer . render Internal ] Ġto Ġdraw Ġthe Ġnext Ġframe . Ġ*/ ĊĠĠĠ Ġ@ Ui Thread ĊĠĠĠ Ġpublic Ġfun Ġinvalidate () ĊĊĠĠĠ Ġ/** ĠIntent Ġto Ġlaunch Ġthe Ġcomp lication Ġpermission Ġdenied Ġactivity . Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget Comp lication Denied Intent (): ĠIntent ? ĊĊĠĠĠ Ġ/** ĠIntent Ġto Ġlaunch Ġthe Ġcomp lication Ġpermission Ġr ationale Ġactivity . Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget Comp lication R ationale Intent (): ĠIntent ? Ċ } Ċ