Skip to content

Most visited

Recently visited

navigation

ComplicationProviderService

public abstract class ComplicationProviderService
extends Service

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Service
         ↳ android.support.wearable.complications.ComplicationProviderService


Class for providers of complication data.

A provider service must implement onComplicationUpdate(int, int, ComplicationManager) to respond to requests for updates from the complication system.

The manifest declaration of this service must include an intent filter for ACTION_COMPLICATION_UPDATE_REQUEST. Metadata to specify the supported types, update period, and config action if required, should also be included (see METADATA_KEY_SUPPORTED_TYPES, METADATA_KEY_UPDATE_PERIOD_SECONDS, and METADATA_KEY_PROVIDER_CONFIG_ACTION).

The manifest entry for the service should also include an android:icon attribute. The icon provided there should be a single-color white icon that represents the provider. This icon will be shown in the provider chooser interface, and may also be included in ComplicationProviderInfo given to watch faces for display in their configuration activities.

The manifest entry should also include android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER" to ensure that only the system can bind to it.

Summary

Constants

String ACTION_COMPLICATION_UPDATE_REQUEST

The intent action used to send update requests to the provider.

String CATEGORY_PROVIDER_CONFIG_ACTION

Category for provider config activities.

String EXTRA_CONFIG_COMPLICATION_ID

Extra used to supply the complication id to a provider configuration activity.

String EXTRA_CONFIG_COMPLICATION_TYPE

Extra used to supply the complication type to a provider configuration activity.

String EXTRA_CONFIG_PROVIDER_COMPONENT

Extra used to supply the provider component to a provider configuration activity.

String METADATA_KEY_PROVIDER_CONFIG_ACTION

Metadata key used to declare an action for a configuration activity for a provider.

String METADATA_KEY_SAFE_WATCH_FACES

Metadata key used to declare a list of watch faces that may receive data from a provider before they are granted the RECEIVE_COMPLICATION_DATA permission.

String METADATA_KEY_SUPPORTED_TYPES

Metadata key used to declare supported complication types.

String METADATA_KEY_UPDATE_PERIOD_SECONDS

Metadata key used to declare the requested frequency of update requests.

Inherited constants

From class android.app.Service
From class android.content.Context
From interface android.content.ComponentCallbacks2

Public constructors

ComplicationProviderService()

Public methods

IBinder onBind(Intent intent)
void onComplicationActivated(int complicationId, int type, ComplicationManager manager)

Called when a complication is activated.

void onComplicationDeactivated(int complicationId)

Called when a complication is deactivated.

abstract void onComplicationUpdate(int complicationId, int type, ComplicationManager manager)

Called when a complication data update is requested for the given complication id.

Inherited methods

From class android.app.Service
From class android.content.ContextWrapper
From class android.content.Context
From class java.lang.Object
From interface android.content.ComponentCallbacks2
From interface android.content.ComponentCallbacks

Constants

ACTION_COMPLICATION_UPDATE_REQUEST

String ACTION_COMPLICATION_UPDATE_REQUEST

The intent action used to send update requests to the provider. Complication provider services must declare an intent filter for this action in the manifest.

Constant Value: "android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST"

CATEGORY_PROVIDER_CONFIG_ACTION

String CATEGORY_PROVIDER_CONFIG_ACTION

Category for provider config activities. The configuration activity for a complication provider must specify this category in its intent filter.

Constant Value: "android.support.wearable.complications.category.PROVIDER_CONFIG"

EXTRA_CONFIG_COMPLICATION_ID

String EXTRA_CONFIG_COMPLICATION_ID

Extra used to supply the complication id to a provider configuration activity.

Constant Value: "android.support.wearable.complications.EXTRA_CONFIG_COMPLICATION_ID"

EXTRA_CONFIG_COMPLICATION_TYPE

String EXTRA_CONFIG_COMPLICATION_TYPE

Extra used to supply the complication type to a provider configuration activity.

Constant Value: "android.support.wearable.complications.EXTRA_CONFIG_COMPLICATION_TYPE"

EXTRA_CONFIG_PROVIDER_COMPONENT

String EXTRA_CONFIG_PROVIDER_COMPONENT

Extra used to supply the provider component to a provider configuration activity.

Constant Value: "android.support.wearable.complications.EXTRA_CONFIG_PROVIDER_COMPONENT"

METADATA_KEY_PROVIDER_CONFIG_ACTION

String METADATA_KEY_PROVIDER_CONFIG_ACTION

Metadata key used to declare an action for a configuration activity for a provider.

A ComplicationProviderService can include a meta-data tag with this name in its manifest entry to cause a configuration activity to be shown when the provider is selected.

The configuration activity must reside in the same package as the provider, and must register an intent filter for the action specified here, including CATEGORY_PROVIDER_CONFIG_ACTION as well as CATEGORY_DEFAULT as categories.

The complication id being configured will be included in the intent that starts the config activity using the extra key EXTRA_CONFIG_COMPLICATION_ID.

The complication type that will be requested from the provider will also be included, using the extra key EXTRA_CONFIG_COMPLICATION_TYPE.

The provider's ComponentName will also be included in the intent that starts the config activity, using the extra key EXTRA_CONFIG_PROVIDER_COMPONENT.

The config activity must call setResult(int) with either RESULT_OK or RESULT_CANCELED before it is finished, to tell the system whether or not the provider should be set on the given complication.

Constant Value: "android.support.wearable.complications.PROVIDER_CONFIG_ACTION"

METADATA_KEY_SAFE_WATCH_FACES

String METADATA_KEY_SAFE_WATCH_FACES

Metadata key used to declare a list of watch faces that may receive data from a provider before they are granted the RECEIVE_COMPLICATION_DATA permission. This allows the listed watch faces to set the provider as a default and have the complication populate when the watch face is first seen.

Only trusted watch faces that will set this provider as a default should be included in this list.

Note that if a watch face is in the same app package as the provider, it does not need to be added to this list.

The value of this tag should be a comma separated list of watch faces or packages. An entry can be a flattened component, as if flattenToString() had been called, to declare a specific watch face as safe. An entry can also be a package name, as if getPackageName() had been called, in which case any watch face under the app with that package name will be considered safe for this provider.

Constant Value: "android.support.wearable.complications.SAFE_WATCH_FACES"

METADATA_KEY_SUPPORTED_TYPES

String METADATA_KEY_SUPPORTED_TYPES

Metadata key used to declare supported complication types.

A ComplicationProviderService must include a meta-data tag with this name in its manifest entry. The value of this tag should be a comma separated list of types supported by the provider. Types should be given as named as per the type fields in the ComplicationData, but omitting the "TYPE_" prefix, e.g. SHORT_TEXT, LONG_TEXT, RANGED_VALUE.

The order in which types are listed has no significance. In the case where a watch face supports multiple types in a single complication slot, the watch face will determine which types it prefers.

For example, a provider that supports the RANGED_VALUE, SHORT_TEXT, and ICON types would include the following in its manifest entry:

 <meta-data android:name="android.support.wearable.complications.SUPPORTED_TYPES"
         android:value="RANGED_VALUE,SHORT_TEXT,ICON"/>

Constant Value: "android.support.wearable.complications.SUPPORTED_TYPES"

METADATA_KEY_UPDATE_PERIOD_SECONDS

String METADATA_KEY_UPDATE_PERIOD_SECONDS

Metadata key used to declare the requested frequency of update requests.

A ComplicationProviderService should include a meta-data tag with this name in its manifest entry. The value of this tag is the number of seconds the provider would like to elapse between update requests.

Note that update requests are not guaranteed to be sent with this frequency.

If a provider never needs to receive update requests beyond the one sent when a complication is activated, the value of this tag should be 0.

For example, a provider that would like to update every ten minutes should include the following in its manifest entry:

 <meta-data android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
         android:value="600"/>

Constant Value: "android.support.wearable.complications.UPDATE_PERIOD_SECONDS"

Public constructors

ComplicationProviderService

ComplicationProviderService ()

Public methods

onBind

IBinder onBind (Intent intent)

Parameters
intent Intent

Returns
IBinder

onComplicationActivated

void onComplicationActivated (int complicationId, 
                int type, 
                ComplicationManager manager)

Called when a complication is activated.

This occurs when the watch face calls setActiveComplications, or when this provider is chosen for a complication which is already active.

Once this has been called, complication data may be sent for the given complicationId, until onComplicationDeactivated(int) is called for that id.

This will usually be followed by a call to onComplicationUpdate(int, int, ComplicationManager).

This will be called on the main thread.

Parameters
complicationId int

type int

manager ComplicationManager

onComplicationDeactivated

void onComplicationDeactivated (int complicationId)

Called when a complication is deactivated.

This occurs when the current watch face changes, or when the watch face calls setActiveComplications and does not include the given complication (usually because the watch face has stopped displaying it).

Once this has been called, no complication data should be sent for the given complicationId, until onComplicationActivated(int, int, ComplicationManager) is called again for that id.

This will be called on the main thread.

Parameters
complicationId int

onComplicationUpdate

void onComplicationUpdate (int complicationId, 
                int type, 
                ComplicationManager manager)

Called when a complication data update is requested for the given complication id.

In response to this request, updateComplicationData should be called on the provided ComplicationManager instance with the data to be displayed. Or, if no update is needed, noUpdateRequired may be called instead. One of these methods must be called so that the system knows when the provider has finished responding to the request.

This call does not need to happen from within this method, but it should be made reasonably soon after the call to this method occurred. If a call does not occur within around 20 seconds (exact timeout length subject to change), then the system will unbind from this service which may cause your eventual update to not be received.

This will be called on the main thread.

Parameters
complicationId int

type int

manager ComplicationManager

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)