WatchFaceService


abstract class WatchFaceService : WallpaperService

Known direct subclasses
ListenableWatchFaceService

This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

StatefulWatchFaceRuntimeService

This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

StatefulWatchFaceService

This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

WatchFaceRuntimeService

This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Known indirect subclasses
ListenableStatefulWatchFaceRuntimeService

This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

ListenableStatefulWatchFaceService

This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

ListenableWatchFaceRuntimeService

This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.


WatchFaceService and WatchFace are a pair of classes intended to handle much of the boilerplate needed to implement a watch face without being too opinionated. The suggested structure of a WatchFaceService based watch face is:

import androidx.wear.watchface.CanvasComplicationFactory
import androidx.wear.watchface.CanvasType
import androidx.wear.watchface.ComplicationSlot
import androidx.wear.watchface.ComplicationSlotsManager
import androidx.wear.watchface.Renderer
import androidx.wear.watchface.WatchFace
import androidx.wear.watchface.WatchFaceService
import androidx.wear.watchface.WatchFaceType
import androidx.wear.watchface.WatchState
import androidx.wear.watchface.complications.ComplicationSlotBounds
import androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy
import androidx.wear.watchface.complications.SystemDataSources
import androidx.wear.watchface.complications.data.ComplicationExperimental
import androidx.wear.watchface.complications.data.ComplicationType
import androidx.wear.watchface.complications.rendering.CanvasComplicationDrawable
import androidx.wear.watchface.complications.rendering.ComplicationDrawable
import androidx.wear.watchface.style.CurrentUserStyleRepository
import androidx.wear.watchface.style.UserStyleSchema
import androidx.wear.watchface.style.UserStyleSetting
import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting
import androidx.wear.watchface.style.UserStyleSetting.Option
import androidx.wear.watchface.style.WatchFaceLayer

class ExampleCanvasWatchFaceService : WatchFaceService() {
    override fun createUserStyleSchema() =
        UserStyleSchema(
            listOf(
                ListUserStyleSetting.Builder(
                        UserStyleSetting.Id(COLOR_STYLE_SETTING),
                        options =
                            listOf(
                                ListUserStyleSetting.ListOption.Builder(
                                        Option.Id(RED_STYLE),
                                        resources,
                                        R.string.colors_style_red,
                                        R.string.colors_style_red_screen_reader
                                    )
                                    .build(),
                                ListUserStyleSetting.ListOption.Builder(
                                        Option.Id(GREEN_STYLE),
                                        resources,
                                        R.string.colors_style_green,
                                        R.string.colors_style_green_screen_reader
                                    )
                                    .build(),
                                ListUserStyleSetting.ListOption.Builder(
                                        Option.Id(BLUE_STYLE),
                                        resources,
                                        R.string.colors_style_blue,
                                        R.string.colors_style_blue_screen_reader
                                    )
                                    .build()
                            ),
                        listOf(
                            WatchFaceLayer.BASE,
                            WatchFaceLayer.COMPLICATIONS,
                            WatchFaceLayer.COMPLICATIONS_OVERLAY
                        ),
                        resources,
                        R.string.colors_style_setting,
                        R.string.colors_style_setting_description
                    )
                    .build(),
                ListUserStyleSetting.Builder(
                        UserStyleSetting.Id(HAND_STYLE_SETTING),
                        options =
                            listOf(
                                ListUserStyleSetting.ListOption.Builder(
                                        Option.Id(CLASSIC_STYLE),
                                        resources,
                                        R.string.hand_style_classic,
                                        R.string.hand_style_classic_screen_reader
                                    )
                                    .build(),
                                ListUserStyleSetting.ListOption.Builder(
                                        Option.Id(MODERN_STYLE),
                                        resources,
                                        R.string.hand_style_modern,
                                        R.string.hand_style_modern_screen_reader
                                    )
                                    .build(),
                                ListUserStyleSetting.ListOption.Builder(
                                        Option.Id(GOTHIC_STYLE),
                                        resources,
                                        R.string.hand_style_gothic,
                                        R.string.hand_style_gothic_screen_reader
                                    )
                                    .build()
                            ),
                        listOf(WatchFaceLayer.COMPLICATIONS_OVERLAY),
                        resources,
                        R.string.hand_style_setting,
                        R.string.hand_style_setting_description
                    )
                    .build()
            )
        )

    @ComplicationExperimental
    override fun createComplicationSlotsManager(
        currentUserStyleRepository: CurrentUserStyleRepository
    ): ComplicationSlotsManager {
        val canvasComplicationFactory = CanvasComplicationFactory { watchState, listener ->
            CanvasComplicationDrawable(ComplicationDrawable(this), watchState, listener)
        }
        return ComplicationSlotsManager(
            listOf(
                ComplicationSlot.createRoundRectComplicationSlotBuilder(
                        /*id */ 0,
                        canvasComplicationFactory,
                        listOf(
                            ComplicationType.RANGED_VALUE,
                            ComplicationType.LONG_TEXT,
                            ComplicationType.SHORT_TEXT,
                            ComplicationType.MONOCHROMATIC_IMAGE,
                            ComplicationType.SMALL_IMAGE
                        ),
                        DefaultComplicationDataSourcePolicy(
                            SystemDataSources.DATA_SOURCE_DAY_OF_WEEK,
                            ComplicationType.SHORT_TEXT
                        ),
                        ComplicationSlotBounds(RectF(0.15625f, 0.1875f, 0.84375f, 0.3125f))
                    )
                    .build(),
                ComplicationSlot.createRoundRectComplicationSlotBuilder(
                        /*id */ 1,
                        canvasComplicationFactory,
                        listOf(
                            ComplicationType.RANGED_VALUE,
                            ComplicationType.LONG_TEXT,
                            ComplicationType.SHORT_TEXT,
                            ComplicationType.MONOCHROMATIC_IMAGE,
                            ComplicationType.SMALL_IMAGE
                        ),
                        DefaultComplicationDataSourcePolicy(
                            SystemDataSources.DATA_SOURCE_STEP_COUNT,
                            ComplicationType.SHORT_TEXT
                        ),
                        ComplicationSlotBounds(RectF(0.1f, 0.5625f, 0.35f, 0.8125f))
                    )
                    .build()
            ),
            currentUserStyleRepository
        )
    }

    inner class MySharedAssets : Renderer.SharedAssets {
        override fun onDestroy() {}
    }

    override suspend fun createWatchFace(
        surfaceHolder: SurfaceHolder,
        watchState: WatchState,
        complicationSlotsManager: ComplicationSlotsManager,
        currentUserStyleRepository: CurrentUserStyleRepository
    ) =
        WatchFace(
            WatchFaceType.ANALOG,
            object :
                Renderer.CanvasRenderer2<MySharedAssets>(
                    surfaceHolder,
                    currentUserStyleRepository,
                    watchState,
                    CanvasType.HARDWARE,
                    interactiveDrawModeUpdateDelayMillis = 16,
                    clearWithBackgroundTintBeforeRenderingHighlightLayer = true
                ) {
                init {
                    // Listen for user style changes.
                    CoroutineScope(Dispatchers.Main.immediate).launch {
                        currentUserStyleRepository.userStyle.collect {
                            // `userStyle` will contain two userStyle categories with options
                            // from the lists above. ..
                        }
                    }
                }

                override fun render(
                    canvas: Canvas,
                    bounds: Rect,
                    zonedDateTime: ZonedDateTime,
                    sharedAssets: MySharedAssets
                ) {
                    // ...
                }

                override fun renderHighlightLayer(
                    canvas: Canvas,
                    bounds: Rect,
                    zonedDateTime: ZonedDateTime,
                    sharedAssets: MySharedAssets
                ) {
                    canvas.drawColor(renderParameters.highlightLayer!!.backgroundTint)

                    // ...
                }

                override suspend fun createSharedAssets(): MySharedAssets {
                    // Insert resource loading here.
                    return MySharedAssets()
                }
            }
        )
}

return ExampleCanvasWatchFaceService()

Sub classes of WatchFaceService are expected to implement createWatchFace which is the factory for making WatchFaces. If the watch faces uses complications then createComplicationSlotsManager should be overridden. All ComplicationSlots are assumed to be enumerated up upfront and passed as a collection into ComplicationSlotsManager's constructor which is returned by createComplicationSlotsManager.

WatchFaceServices are required to be stateless as multiple can be created in parallel. If per instance state is required please use StatefulWatchFaceService.

Watch face styling (color and visual look of watch face elements such as numeric fonts, watch hands and ticks, etc...) and companion editing is directly supported via UserStyleSchema and UserStyleSetting. To enable support for styling override createUserStyleSchema.

WatchFaceService can expose pre-populated style presets by overriding createUserStyleFlavors or via XML (see below). Each presents represents separate style configured with UserStyle and complication slot policies configured with androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy. The system will only access flavors if metadata tag is present in manifest:

    <meta-data
android:name="androidx.wear.watchface.FLAVORS_SUPPORTED"
android:value="true" />

WatchFaces are initially constructed on a background thread before being used exclusively on the ui thread afterwards. There is a memory barrier between construction and rendering so no special threading primitives are required.

To aid debugging watch face animations, WatchFaceService allows you to speed up or slow down time, and to loop between two instants. This is controlled by MOCK_TIME_INTENT intents with a float extra called "androidx.wear.watchface.extra.MOCK_TIME_SPEED_MULTIPLIE" and to long extras called "androidx.wear.watchface.extra.MOCK_TIME_WRAPPING_MIN_TIME" and "androidx.wear.watchface.extra.MOCK_TIME_WRAPPING_MAX_TIME" (which are UTC time in milliseconds). If minTime is omitted or set to -1 then the current time is sampled as minTime.

E.g., to make time go twice as fast: adb shell am broadcast -a androidx.wear.watchface.MockTime
--ef androidx.wear.watchface.extra.MOCK_TIME_SPEED_MULTIPLIER 2.0

To use the sample on watch face editor UI, import the wear:wear-watchface-editor-samples library and add the following into your watch face's AndroidManifest.xml:

<activity
android:name="androidx.wear.watchface.editor.sample.WatchFaceConfigActivity"
android:exported="true"
android:label="Config"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="androidx.wear.watchface.editor.action.WATCH_FACE_EDITOR" />
<category android:name=
"com.google.android.wearable.watchface.category.WEARABLE_CONFIGURATION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

To register a WatchFaceService with the system add a tag to the in your watch face's AndroidManifest.xml:

<service
android:name=".MyWatchFaceServiceClass"
android:exported="true"
android:label="@string/watch_face_name"
android:permission="android.permission.BIND_WALLPAPER">
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
<category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
</intent-filter>
<meta-data
android:name="com.google.android.wearable.watchface.preview"
android:resource="@drawable/my_watch_preview" />
<meta-data
android:name="com.google.android.wearable.watchface.preview_circular"
android:resource="@drawable/my_watch_circular_preview" />
<meta-data
android:name="com.google.android.wearable.watchface.wearableConfigurationAction"
android:value="androidx.wear.watchface.editor.action.WATCH_FACE_EDITOR"/>
<meta-data
android:name="android.service.wallpaper"
android:resource="@xml/watch_face" />
<meta-data
android:name=
"com.google.android.wearable.watchface.companionBuiltinConfigurationEnabled"
android:value="true" />
</service>

Multiple watch faces can be defined in the same package, requiring multiple tags.

By default the system will only allow the user to create a single instance of the watch face. You can choose to allow the user to create multiple instances (each with their own styling and a distinct WatchState.watchFaceInstanceId) by adding this meta-data to your watch face's manifest:

    <meta-data
android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
android:value="true" />

A watch face can declare the UserStyleSchema, ComplicationSlots and UserStyleFlavors in XML. The main advantage is simplicity for the developer, however meta data queries (see androidx.wear.watchface.client.WatchFaceMetadataClient) are faster because they can be performed without having to bind to the WatchFaceService.

To use xml inflation, add an androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition meta date tag to your service:

    <meta-data
android:name="androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition"
android:resource="@xml/my_watchface_definition" />

And the linked xml/my_watchface_definition resource must contain a XmlWatchFace node. E.g.:

     <XmlWatchFace xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<UserStyleSchema>
<ListUserStyleSetting
android:icon="@drawable/time_style_icon"
app:affectedWatchFaceLayers="BASE|COMPLICATIONS|COMPLICATIONS_OVERLAY"
app:defaultOptionIndex="1"
app:description="@string/time_style_description"
app:displayName="@string/time_style_name"
app:id="TimeStyle">
<ListOption
android:icon="@drawable/time_style_minimal_icon"
app:displayName="@string/time_style_minimal_name"
app:id="minimal" />
<ListOption
android:icon="@drawable/time_style_seconds_icon"
app:displayName="@string/time_style_seconds_name"
app:id="seconds" />
</ListUserStyleSetting>
</UserStyleSchema>
</ComplicationSlot>
app:slotId="1"
app:boundsType="ROUND_RECT"
app:supportedTypes="SHORT_TEXT|RANGED_VALUE|SMALL_IMAGE"
app:defaultDataSourceType="RANGED_VALUE"
app:systemDataSourceFallback="DATA_SOURCE_WATCH_BATTERY">
<ComplicationSlotBounds
app:left="0.3" app:top="0.7" app:right="0.7" app:bottom="0.9"/>
</ComplicationSlot>
<UserStyleFlavors>
<UserStyleFlavor app:id="flavor1">
<StyleOption app:id="TimeStyle" app:value="minimal"/>
<ComplicationPolicy
app:slotId="1"
app:primaryDataSource="com.package/com.app"
app:primaryDataSourceDefaultType="SHORT_TEXT"
app:systemDataSourceFallback="DATA_SOURCE_DAY_AND_DATE"
app:systemDataSourceFallbackDefaultType="SHORT_TEXT"/>
</UserStyleFlavor>
</UserStyleFlavors>
</XmlWatchFace>

If you use resources references to specify identifiers, they should be locale independent (i.e. translatable="false").

If you use XmlSchemaAndComplicationSlotsDefinition then you shouldn't override createUserStyleSchema or createComplicationSlotsManager. However if tags are defined then you must override getComplicationSlotInflationFactory in order to provide the CanvasComplicationFactory and where necessary edge complication ComplicationTapFilters.

Note the tag does not support configExtras because in general a Bundle can not be inflated from XML.

Note it is an error to define a XmlSchemaAndComplicationSlotsDefinition and not use it.

As of Wear OS 4, complications can provide data using dynamic values, that the platform evaluates continuously and sends the evaluated results to the watch face. Privileged watch faces that can utilize the unevaluated dynamic values, can include the privileged permission com.google.wear.permission.GET_COMPLICATION_DYNAMIC_VALUE in their manifest, which will tell the system to avoid pruning them from the ComplicationData, where they will show up in the relevant fields next to the evaluated values.

use Watch Face Format instead

Summary

Constants

const Int

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Public constructors

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Public functions

Handler

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Handler

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

final WallpaperService.Engine

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Protected functions

open ComplicationSlotsManager

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open UserStyleFlavors
@WorkerThread
createUserStyleFlavors(
    currentUserStyleRepository: CurrentUserStyleRepository,
    complicationSlotsManager: ComplicationSlotsManager
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open UserStyleSchema

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

abstract suspend WatchFace
@WorkerThread
createWatchFace(
    surfaceHolder: SurfaceHolder,
    watchState: WatchState,
    complicationSlotsManager: ComplicationSlotsManager,
    currentUserStyleRepository: CurrentUserStyleRepository
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
@UiThread
dump(fd: FileDescriptor, writer: PrintWriter, args: Array<String>)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open ComplicationSlotInflationFactory?

This function is deprecated. Use the version with currentUserStyleRepository argument instead

open ComplicationSlotInflationFactory

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Inherited functions

From android.content.Context
open Boolean
bindIsolatedService(
    p0: Intent,
    p1: Context.BindServiceFlags,
    p2: String,
    p3: Executor,
    p4: ServiceConnection
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Int

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

ColorStateList

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Drawable?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

String

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

String
getString(p0: Int, vararg p1: Any)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

T
<T : Any> getSystemService(p0: Class<T>)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

CharSequence
getText(p0: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

TypedArray

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

TypedArray

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

TypedArray

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

TypedArray
obtainStyledAttributes(p0: AttributeSet?, p1: IntArray, p2: Int, p3: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

From android.content.ContextWrapper
open Boolean
bindIsolatedService(
    p0: Intent,
    p1: Int,
    p2: String,
    p3: Executor,
    p4: ServiceConnection
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean
bindService(
    p0: Intent,
    p1: ServiceConnection,
    p2: Context.BindServiceFlags
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean
bindService(
    p0: Intent,
    p1: Context.BindServiceFlags,
    p2: Executor,
    p3: ServiceConnection
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean
bindService(p0: Intent, p1: Int, p2: Executor, p3: ServiceConnection)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean
bindServiceAsUser(
    p0: Intent,
    p1: ServiceConnection,
    p2: Context.BindServiceFlags,
    p3: UserHandle
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open IntArray

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open IntArray

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int
checkContentUriPermissionFull(p0: Uri, p1: Int, p2: Int, p3: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int
checkPermission(p0: String, p1: Int, p2: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int
checkUriPermission(p0: Uri, p1: Int, p2: Int, p3: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int
checkUriPermission(p0: Uri?, p1: String?, p2: String?, p3: Int, p4: Int, p5: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open IntArray
checkUriPermissions(p0: MutableList<Uri>, p1: Int, p2: Int, p3: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. Deprecated in Java

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context
createWindowContext(p0: Display, p1: Int, p2: Bundle?)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Array<String>

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
enforcePermission(p0: String, p1: Int, p2: Int, p3: String?)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
enforceUriPermission(p0: Uri, p1: Int, p2: Int, p3: Int, p4: String)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
enforceUriPermission(
    p0: Uri?,
    p1: String?,
    p2: String?,
    p3: Int,
    p4: Int,
    p5: Int,
    p6: String?
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Array<String>

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open ApplicationInfo

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open AssetManager

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open AttributionSource

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open String?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Context

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open ClassLoader

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open ContentResolver

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Int

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File
getDir(p0: String, p1: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Display?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Array<File>

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Array<File>

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Array<File>

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Executor

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Looper

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open File

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Array<File>

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open String

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open String

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open PackageManager

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open String

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open String

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open ContextParams?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Resources

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open SharedPreferences

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Any

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open String?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Resources.Theme

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Drawable

This function is deprecated. Deprecated in Java

open Int

This function is deprecated. Deprecated in Java

open Int

This function is deprecated. Deprecated in Java

open Unit
grantUriPermission(p0: String, p1: Uri, p2: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open FileInputStream

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open FileOutputStream

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open SQLiteDatabase

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open SQLiteDatabase
openOrCreateDatabase(
    p0: String,
    p1: Int,
    p2: SQLiteDatabase.CursorFactory,
    p3: DatabaseErrorHandler?
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Drawable

This function is deprecated. Deprecated in Java

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Intent?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Intent?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Intent?
registerReceiver(
    p0: BroadcastReceiver?,
    p1: IntentFilter,
    p2: String?,
    p3: Handler?
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Intent?
registerReceiver(
    p0: BroadcastReceiver?,
    p1: IntentFilter,
    p2: String?,
    p3: Handler?,
    p4: Int
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. Deprecated in Java

open Unit

This function is deprecated. Deprecated in Java

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
revokeUriPermission(p0: String, p1: Uri, p2: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
sendBroadcast(p0: Intent, p1: String?, p2: Bundle?)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
sendOrderedBroadcast(
    p0: Intent,
    p1: String?,
    p2: BroadcastReceiver?,
    p3: Handler?,
    p4: Int,
    p5: String?,
    p6: Bundle?
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
sendOrderedBroadcast(
    p0: Intent,
    p1: String?,
    p2: Bundle?,
    p3: BroadcastReceiver?,
    p4: Handler?,
    p5: Int,
    p6: String?,
    p7: Bundle?
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
sendOrderedBroadcast(
    p0: Intent,
    p1: String?,
    p2: String?,
    p3: BroadcastReceiver?,
    p4: Handler?,
    p5: Int,
    p6: String?,
    p7: Bundle?
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
sendOrderedBroadcast(
    p0: Intent,
    p1: Int,
    p2: String?,
    p3: String?,
    p4: BroadcastReceiver?,
    p5: Handler?,
    p6: String?,
    p7: Bundle?,
    p8: Bundle?
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
sendOrderedBroadcastAsUser(
    p0: Intent,
    p1: UserHandle,
    p2: String?,
    p3: BroadcastReceiver?,
    p4: Handler?,
    p5: Int,
    p6: String?,
    p7: Bundle?
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. Deprecated in Java

open Unit

This function is deprecated. Deprecated in Java

open Unit

This function is deprecated. Deprecated in Java

open Unit
sendStickyOrderedBroadcast(
    p0: Intent,
    p1: BroadcastReceiver?,
    p2: Handler?,
    p3: Int,
    p4: String?,
    p5: Bundle?
)

This function is deprecated. Deprecated in Java

open Unit
sendStickyOrderedBroadcastAsUser(
    p0: Intent,
    p1: UserHandle,
    p2: BroadcastReceiver?,
    p3: Handler?,
    p4: Int,
    p5: String?,
    p6: Bundle?
)

This function is deprecated. Deprecated in Java

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. Deprecated in Java

open Unit

This function is deprecated. Deprecated in Java

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open ComponentName?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
startIntentSender(p0: IntentSender, p1: Intent?, p2: Int, p3: Int, p4: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
startIntentSender(
    p0: IntentSender,
    p1: Intent?,
    p2: Int,
    p3: Int,
    p4: Int,
    p5: Bundle?
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open ComponentName?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

From android.app.Service
open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Application

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Int

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
onStart(p0: Intent, p1: Int)

This function is deprecated. Deprecated in Java

open Int
onStartCommand(p0: Intent, p1: Int, p2: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit
onTimeout(p0: Int, p1: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit
startForeground(p0: Int, p1: Notification, p2: Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit

This function is deprecated. Deprecated in Java

Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

From android.service.wallpaper.WallpaperService
final IBinder?

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Constants

MAX_CREATE_WATCHFACE_TIME_MILLIS

const val MAX_CREATE_WATCHFACE_TIME_MILLIS = 5000: Int

The maximum permitted duration of WatchFaceService.createWatchFace.

Public constructors

WatchFaceService

Added in 1.0.0
Deprecated in 1.3.0-alpha06
WatchFaceService()

Public functions

getBackgroundThreadHandler

Added in 1.0.0
Deprecated in 1.3.0-alpha06
fun getBackgroundThreadHandler(): Handler

Returns the lazily constructed background thread Handler. During initialization createUserStyleSchema, createComplicationSlotsManager and createWatchFace are posted on this handler.

getUiThreadHandler

Added in 1.0.0
Deprecated in 1.3.0-alpha06
fun getUiThreadHandler(): Handler

Returns the ui thread Handler.

onConfigurationChanged

open fun onConfigurationChanged(newConfig: Configuration): Unit

onCreateEngine

Added in 1.0.0
Deprecated in 1.3.0-alpha06
final fun onCreateEngine(): WallpaperService.Engine

Creates an interactive engine for WallpaperService.

Protected functions

createComplicationSlotsManager

Added in 1.0.0
Deprecated in 1.3.0-alpha06
@WorkerThread
protected open fun createComplicationSlotsManager(
    currentUserStyleRepository: CurrentUserStyleRepository
): ComplicationSlotsManager

If the WatchFaceService's manifest doesn't define a androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition meta data tag then override this factory method to create a non-empty ComplicationSlotsManager. This manager will be passed to createUserStyleFlavors and createWatchFace. This will be called from a background thread but the ComplicationSlotsManager should be accessed exclusively from the UiThread afterwards.

Parameters
currentUserStyleRepository: CurrentUserStyleRepository

The CurrentUserStyleRepository constructed using the UserStyleSchema returned by createUserStyleSchema.

createUserStyleFlavors

Added in 1.2.0
Deprecated in 1.3.0-alpha06
@WorkerThread
protected open fun createUserStyleFlavors(
    currentUserStyleRepository: CurrentUserStyleRepository,
    complicationSlotsManager: ComplicationSlotsManager
): UserStyleFlavors

If the WatchFaceService's manifest doesn't define a androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition meta data tag then override this factory method to create non-empty UserStyleFlavors. This is called on a background thread. The system reads the flavors once and changes may be ignored until the APK is updated. Metadata tag "androidx.wear.watchface.FLAVORS_SUPPORTED" should be added to let the system know the service supports flavors.

Parameters
currentUserStyleRepository: CurrentUserStyleRepository

The CurrentUserStyleRepository constructed using the UserStyleSchema returned by createUserStyleSchema.

complicationSlotsManager: ComplicationSlotsManager

The ComplicationSlotsManager returned by createComplicationSlotsManager

Returns
UserStyleFlavors

The UserStyleFlavors, which is exposed to the system.

createUserStyleSchema

Added in 1.0.0
Deprecated in 1.3.0-alpha06
@WorkerThread
protected open fun createUserStyleSchema(): UserStyleSchema

If the WatchFaceService's manifest doesn't define an androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition meta data tag then override this factory method to create a non-empty UserStyleSchema. A CurrentUserStyleRepository constructed with this schema will be passed to createComplicationSlotsManager, createUserStyleFlavors and createWatchFace. This is called on a background thread.

createWatchFace

@WorkerThread
protected abstract suspend fun createWatchFace(
    surfaceHolder: SurfaceHolder,
    watchState: WatchState,
    complicationSlotsManager: ComplicationSlotsManager,
    currentUserStyleRepository: CurrentUserStyleRepository
): WatchFace

Override this factory method to create your WatchFaceImpl. This method will be called by the library on a background thread, if possible any expensive initialization should be done asynchronously. The WatchFace and its Renderer should be accessed exclusively from the UiThread afterwards. There is a memory barrier between construction and rendering so no special threading primitives are required.

Warning the system will likely time out waiting for watch face initialization if it takes longer than MAX_CREATE_WATCHFACE_TIME_MILLIS milliseconds.

Parameters
surfaceHolder: SurfaceHolder

The SurfaceHolder to pass to the Renderer's constructor.

watchState: WatchState

The WatchState for the watch face.

complicationSlotsManager: ComplicationSlotsManager

The ComplicationSlotsManager returned by createComplicationSlotsManager.

currentUserStyleRepository: CurrentUserStyleRepository

The CurrentUserStyleRepository constructed using the UserStyleSchema returned by createUserStyleSchema.

Returns
WatchFace

A WatchFace whose Renderer uses the provided surfaceHolder.

dump

@UiThread
protected open fun dump(fd: FileDescriptor, writer: PrintWriter, args: Array<String>): Unit

getComplicationSlotInflationFactory

Added in 1.1.0
Deprecated in 1.2.0
@WorkerThread
protected open fun getComplicationSlotInflationFactory(): ComplicationSlotInflationFactory?

Used when inflating ComplicationSlots from XML (i.e the manifest contains androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition metadata) to provide a ComplicationSlotInflationFactory which provides the CanvasComplicationFactory and where necessary edge complication ComplicationTapFilters needed for inflating ComplicationSlots.

If an androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition metadata tag is defined for your WatchFaceService 's manifest, and your XML includes tags then you must override this method.

getComplicationSlotInflationFactory

Added in 1.2.0
Deprecated in 1.3.0-alpha06
@WorkerThread
protected open fun getComplicationSlotInflationFactory(
    currentUserStyleRepository: CurrentUserStyleRepository
): ComplicationSlotInflationFactory

Used when inflating ComplicationSlots from XML (i.e the manifest contains androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition metadata) to provide a ComplicationSlotInflationFactory which provides the CanvasComplicationFactory and where necessary edge complication ComplicationTapFilters needed for inflating ComplicationSlots.

If an androidx.wear.watchface.XmlSchemaAndComplicationSlotsDefinition metadata tag is defined for your WatchFaceService 's manifest, and your XML includes tags then you must override this method. A NotImplementedError exception will be thrown if you don't.

Parameters
currentUserStyleRepository: CurrentUserStyleRepository

The CurrentUserStyleRepository constructed using the UserStyleSchema returned by createUserStyleSchema.