EditorSession
public interface EditorSession extends AutoCloseable
ListenableEditorSession |
This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
Interface for manipulating watch face state during a watch face editing session. The editor should adjust userStyle and call openComplicationDataSourceChooser to configure the watch face and call close when done. This reports the updated EditorState to the EditorListeners registered via EditorServiceClient.addListener.
For EditorSessions backed by a headless instance (see createHeadlessEditorSession and EditorRequest.headlessDeviceConfig), style changes are not applied to the interactive instance and it's up to the system to apply them. For EditorSessions backed by an interactive instance style changes are applied immediately. Its possible the system might fail to persist the style changes (e.g. to data base write failure or a crash) and if this happens it's the responsibility of the system to revert the style change.
use Watch Face Format instead
Summary
Public fields |
|
|---|---|
default static final @NonNull Instant |
This field is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
default static final @NonNull Duration |
This field is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
Public methods |
|
|---|---|
default static final @NonNull EditorSession |
@RequiresApi(value = 27)This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
default static final @NonNull EditorSession |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract Integer |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract Integer |
@UiThreadThis method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract @NonNull StateFlow<@NonNull Map<@NonNull Integer, @NonNull ComplicationSlotState>> |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract @NonNull StateFlow<@NonNull Map<@NonNull Integer, ComplicationDataSourceInfo>> |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract @NonNull StateFlow<@NonNull Map<@NonNull Integer, @NonNull ComplicationData>> |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract @NonNull Instant |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract @NonNull MutableStateFlow<@NonNull UserStyle> |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract @NonNull UserStyleSchema |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract @NonNull ComponentName |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract @NonNull WatchFaceId |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract boolean |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract ChosenComplicationDataSource |
@UiThreadThis method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract @NonNull Bitmap |
@UiThreadThis method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract void |
@UiThreadThis method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
default void |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
Inherited methods |
||
|---|---|---|
|
Public fields
DEFAULT_PREVIEW_INSTANT
default static final @NonNull Instant DEFAULT_PREVIEW_INSTANT
If passed renderWatchFaceToBitmap this will signal that the watch face's default preview time should be used.
EDITING_SESSION_TIMEOUT
default static final @NonNull Duration EDITING_SESSION_TIMEOUT
Timeout allowed for waiting for creating the watch face editing session.
Public methods
createHeadlessEditorSession
@RequiresApi(value = 27)
@UiThread
default static final @NonNull EditorSessioncreateHeadlessEditorSession(
@NonNull ComponentActivity activity,
@NonNull Intent editIntent,
@NonNull HeadlessWatchFaceClient headlessWatchFaceClient
)
Constructs an EditorSession for a remote watch face editor.
Caution the remote watchface must have been built with the same version of the watch face libraries.
| Parameters | |
|---|---|
@NonNull ComponentActivity activity |
The |
@NonNull Intent editIntent |
The |
@NonNull HeadlessWatchFaceClient headlessWatchFaceClient |
The |
| Returns | |
|---|---|
@NonNull EditorSession |
The |
createOnWatchEditorSession
@UiThread
default static final @NonNull EditorSessioncreateOnWatchEditorSession(@NonNull ComponentActivity activity)
Constructs an EditorSession for an on watch face editor. This registers an activity result handler and so it must be called during an Activity or Fragment initialization path. The EditorSession is lifecycle aware and will automatically close when onDestroy is received.
| Parameters | |
|---|---|
@NonNull ComponentActivity activity |
The |
| Returns | |
|---|---|
@NonNull EditorSession |
Deferred |
| Throws | |
|---|---|
kotlinx.coroutines.TimeoutCancellationException |
if it takes longer than |
getBackgroundComplicationSlotId
abstract IntegergetBackgroundComplicationSlotId()
The ID of the background complication or null if there isn't one.
getComplicationSlotIdAt
@UiThread
abstract IntegergetComplicationSlotIdAt(@Px int x, @Px int y)
Returns the ID of the complication at the given coordinates or null if there isn't one. Only androidx.wear.watchface.ComplicationSlots with ComplicationSlotBoundsType.ROUND_RECT are supported by this function.
getComplicationSlotsState
abstract @NonNull StateFlow<@NonNull Map<@NonNull Integer, @NonNull ComplicationSlotState>>getComplicationSlotsState()
A Flow of a Map of complication slot ids to ComplicationSlotState for each complication slot.
If accessed from java, consider using androidx.lifecycle.FlowLiveDataConversions.asLiveData to observe changes.
getComplicationsDataSourceInfo
abstract @NonNull StateFlow<@NonNull Map<@NonNull Integer, ComplicationDataSourceInfo>>getComplicationsDataSourceInfo()
Returns a flow of maps of androidx.wear.watchface.ComplicationSlot ids to ComplicationDataSourceInfo that represent the information available about the data source for each complication. This data is fetched asynchronously and the map will initially be empty. For watch faces without complications this will always be empty.
Note new data may be pushed as result of running openComplicationDataSourceChooser.
Note a null ComplicationDataSourceInfo will be associated with a complication slot id if the androidx.wear.watchface.ComplicationSlot is configured to show the empty complication data source.
getComplicationsPreviewData
abstract @NonNull StateFlow<@NonNull Map<@NonNull Integer, @NonNull ComplicationData>>getComplicationsPreviewData()
Returns a flow of maps of androidx.wear.watchface.ComplicationSlot ids to preview ComplicationData suitable for use in rendering a preview of the watch face. This data is fetched asynchronously and the map will initially be empty. For watch faces without complications this will always be empty.
Note new data may be pushed as a result of running openComplicationDataSourceChooser.
Note if a slot is configured to be empty then the map will contain an instance of EmptyComplicationData for that slot. Disabled complicationSlots are included in the map.
If accessed from java, consider using androidx.lifecycle.FlowLiveDataConversions.asLiveData to observe changes.
getPreviewReferenceInstant
abstract @NonNull InstantgetPreviewReferenceInstant()
The reference preview Instant for this watch face to render previews with.
getUserStyle
abstract @NonNull MutableStateFlow<@NonNull UserStyle>getUserStyle()
The current UserStyle. Assigning to this will cause the style to update. However, styling changes to the watch face will be reverted upon exit.
If accessed from java, consider using androidx.lifecycle.FlowLiveDataConversions.asLiveData to observe changes.
getUserStyleSchema
abstract @NonNull UserStyleSchemagetUserStyleSchema()
The watch face's UserStyleSchema.
getWatchFaceComponentName
abstract @NonNull ComponentNamegetWatchFaceComponentName()
The ComponentName of the watch face being edited.
getWatchFaceId
abstract @NonNull WatchFaceIdgetWatchFaceId()
Unique ID for the instance of the watch face being edited. Note each distinct ComponentName can sometimes have multiple instances. See WatchFaceId for more details.
isCommitChangesOnClose
@UiThread
abstract booleanisCommitChangesOnClose()
Whether any changes should be committed when the session is closed (defaults to true).
Note due to SysUI requirements EditorState can't reliably be sent in the activity result because there are circumstances where ComponentActivity.onStop doesn't get called but the UX requires us to commit changes.
Regardless of the value, on completion of the editor session, the original UserStyle is restored. Note we need SysUI's help to revert any complication data source changes. Caveat some complication data sources have their own config (e.g. the world clock has a timezone setting) and that config currently can't be reverted.
openComplicationDataSourceChooser
@UiThread
abstract ChosenComplicationDataSourceopenComplicationDataSourceChooser(int complicationSlotId)
Opens the complication data source chooser and returns the chosen complication data source for the specified androidx.wear.watchface.ComplicationSlot.
The result returns null if the operation was cancelled and otherwise returned an instance of ChosenComplicationDataSource that contains information about the chosen data source.
| Parameters | |
|---|---|
int complicationSlotId |
The id of the |
| Throws | |
|---|---|
kotlin.IllegalStateException |
if a previous invocation of openComplicationDataSourceChooser is still running when openComplicationDataSourceChooser is called. |
renderWatchFaceToBitmap
@UiThread
abstract @NonNull BitmaprenderWatchFaceToBitmap(
@NonNull RenderParameters renderParameters,
@NonNull Instant instant,
Map<@NonNull Integer, @NonNull ComplicationData> slotIdToComplicationData
)
Renders the watch face to a Bitmap using the current userStyle.
| Parameters | |
|---|---|
@NonNull RenderParameters renderParameters |
The |
@NonNull Instant instant |
The |
Map<@NonNull Integer, @NonNull ComplicationData> slotIdToComplicationData |
Override |
setCommitChangesOnClose
@UiThread
abstract voidsetCommitChangesOnClose(boolean commitChangesOnClose)
Whether any changes should be committed when the session is closed (defaults to true).
Note due to SysUI requirements EditorState can't reliably be sent in the activity result because there are circumstances where ComponentActivity.onStop doesn't get called but the UX requires us to commit changes.
Regardless of the value, on completion of the editor session, the original UserStyle is restored. Note we need SysUI's help to revert any complication data source changes. Caveat some complication data sources have their own config (e.g. the world clock has a timezone setting) and that config currently can't be reverted.
setOverrideComplications
default voidsetOverrideComplications(
@NonNull Map<@NonNull Integer, @NonNull ComplicationData> slotIdToComplicationData
)
For the duration of the editor session, applies an override to complications rendered via renderWatchFaceToBitmap. If you need to render multiple times with the same slotIdToComplicationData it's more efficient to use this API and call renderWatchFaceToBitmap with null slotIdToComplicationData. When the editor session ends this override will be removed.
Note if after this call updated complications are sent via InteractiveWatchFaceClient.updateComplicationData, they will only be applied once the editor session has ended.