Wear
androidx.wear.activity
androidx.wear.ambient
androidx.wear.input
androidx.wear.utils
androidx.wear.widget
androidx.wear.widget.drawer
(See the refdocs for all wear packages)
This table lists all the artifacts in the androidx.wear
group.
Artifact | Stable Release | Release Candidate | Beta Release | Alpha Release |
---|---|---|---|---|
wear | 1.3.0 | - | - | 1.4.0-alpha01 |
wear-input | 1.1.0 | - | - | 1.2.0-alpha02 |
wear-input-testing | 1.1.0 | - | - | 1.2.0-alpha02 |
wear-ongoing | 1.0.0 | - | - | 1.1.0-alpha01 |
wear-phone-interactions | 1.0.1 | - | - | 1.1.0-alpha04 |
wear-remote-interactions | 1.0.0 | - | 1.1.0-beta01 | - |
Declaring dependencies
To add a dependency on Wear, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.
Add the dependencies for the artifacts you need in the build.gradle
file for
your app or module:
Groovy
dependencies { implementation "androidx.wear:wear:1.3.0" // Add support for wearable specific inputs implementation "androidx.wear:wear-input:1.1.0" implementation "androidx.wear:wear-input-testing:1.1.0" // Use to implement wear ongoing activities implementation "androidx.wear:wear-ongoing:1.0.0" // Use to implement support for interactions from the Wearables to Phones implementation "androidx.wear:wear-phone-interactions:1.0.1" // Use to implement support for interactions between the Wearables and Phones implementation "androidx.wear:wear-remote-interactions:1.0.0" }
Kotlin
dependencies { implementation("androidx.wear:wear:1.3.0") // Add support for wearable specific inputs implementation("androidx.wear:wear-input:1.1.0") implementation("androidx.wear:wear-input-testing:1.1.0") // Use to implement wear ongoing activities implementation("androidx.wear:wear-ongoing:1.0.0") // Use to implement support for interactions from the Wearables to Phones implementation("androidx.wear:wear-phone-interactions:1.0.1") // Use to implement support for interactions between the Wearables and Phones implementation("androidx.wear:wear-remote-interactions:1.0.0") }
For more information about dependencies, see Add build dependencies.
Feedback
Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.
See the Issue Tracker documentation for more information.
Wear Core Version 1.0
Version 1.0.0-alpha01
May 29, 2024
androidx.wear:wear-core:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
API Changes
- Added a new class
WearApiVersionhelper
to assist with runtime API compatibility checking on Wear. Clients can use this static helper class and the provided method (#isApiVersionAtLeast(VERSION)
) to check compatibility.
Wear Tooling Preview Version 1.0
Version 1.0.0
November 29, 2023
androidx.wear:wear-tooling-preview:1.0.0
is released. Version 1.0.0 contains these commits.
Features in 1.0.0
- Add
WearDevices
to list valid wear devices that can be used for UI previews.
Version 1.0.0-rc01
November 15, 2023
androidx.wear:wear-tooling-preview:1.0.0-rc01
is released with no changes. Version 1.0.0-rc01 contains these commits.
Version 1.0.0-beta01
October 18, 2023
androidx.wear:wear-tooling-preview:1.0.0-beta01
is released with no changes. Version 1.0.0-beta01 contains these commits.
Version 1.0.0-alpha01
August 23, 2023
androidx.wear:wear-tooling-preview:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
API Changes
- Add
WearDevices
to list valid wear devices that can be used for UI previews (Ib036e)
Wear Version 1.4
Version 1.4.0-alpha01
November 15, 2023
androidx.wear:wear:1.4.0-alpha01
is released. Version 1.4.0-alpha01 contains these commits.
Bug Fixes
- Vertically center
ConfirmationOverlay
icon when there's no message. (I496d8)
Wear Version 1.3
Version 1.3.0
August 9, 2023
androidx.wear:wear:1.3.0
is released with no changes since 1.3.0-rc01
. Version 1.3.0 contains these commits.
Important changes since 1.2.0
- Migrate
AmbientModeSupport
to useLifecycleObserver
. DeprecateAmbientModeSupport
in favor of the new lifecycle-aware classes. - Update
ConfirmationOverlay
with new icons/layout, fonts and font metrics SwipeDismissTransitionHelper
updated to use a background drawable instead of a 2ndView
to correct errors when using theFragmentContainerView
SwipeDismissFrameLayout
animation updated to be consistent with the Wear platform and Wear Compose implementations.SwipeDismissFrameLayout
bug fix to avoid accidental dismissing of fragments with a vertical flingArcLayout
now supports expansion weights which operate in a similar way to regular Layout weights.- Support
layoutDirection
onArcLayout
Version 1.3.0-rc01
June 21, 2023
androidx.wear:wear:1.3.0-rc01
is released with no changes since 1.3.0-beta01
. Version 1.3.0-rc01 contains these commits.
Version 1.3.0-beta01
June 7, 2023
androidx.wear:wear:1.3.0-beta01
is released. Version 1.3.0-beta01 contains these commits.
API Changes
- Updated
AmbientLifecycleObserver
after feedback.AmbientLifecycleObserverInterface
has been renamed toAmbientLifecycleObserver
, and an instance can be obtained by callingAmbientLifecycleObserver(...)
.isAmbient
has been moved to be a field instead of a method. (I84b4f)
Bug Fixes
- Adding null checks to handle cases when the parent view is null while resetting alpha and translation in
SwipeToDismiss
. (Ib0ec7)
Version 1.3.0-alpha05
April 19, 2023
androidx.wear:wear:1.3.0-alpha05
is released. Version 1.3.0-alpha05 contains these commits.
API Changes
- Migrate
AmbientModeSupport
to useLifecycleObserver
. DeprecateAmbientModeSupport
in favour of the new lifecycle-aware classes. (I1593b)
Bug Fixes
- Update
SwipeDismissTransitionHelper
background scrim approach to use drawables instead of adding view to fix errors while usingFragmentContainerView
. (I851cd)
Version 1.3.0-alpha04
January 25, 2023
androidx.wear:wear:1.3.0-alpha04
is released. Version 1.3.0-alpha04 contains these commits.
Bug Fixes
- We have updated the animation in
SwipeDismissFrameLayout
to be consistent with the Wear platform and Wear Compose implementations. (I7261b)
Version 1.3.0-alpha03
August 24, 2022
androidx.wear:wear:1.3.0-alpha03
is released. Version 1.3.0-alpha03 contains these commits.
New Features
ArcLayout
now supports expansion weights which operate in a similar way to regular Layout weights. This means you can specify the relative size of child elements without having to compute their angles directly. We’ve also added a best effortMaxAngleDegrees
which is respected when expanding child elements with weights. E.g. you could clamp the arc with several children with weights to 90 degrees, this would also respect the space taken by any non-expanded elements..
API Changes
- We've added weight to
ArcLayout.LayoutParams
which allows a widget to expand to fill the available space, if there's more than one widget then their share of the available space is proportional to their weight. In addition we've addedArcLayout.setMaxAngleDegrees
so you can for example cap the expansion at 90 degrees (NB this does not affect layout of any fixed sized child widgets). FinallyArcLayout.Widget
now hassetSweepAngleDegrees
which allows theArcLayout
to inform a Widget with a non-zero weight of its size. (I75f24) - Updated nullability of
setColorFilter
(I99ddf, b/236498063)
Version 1.3.0-alpha02
February 23, 2022
androidx.wear:wear:1.3.0-alpha02
is released. Version 1.3.0-alpha02 contains these commits.
New Features
- Support
layoutDirection
onArcLayout
(I14d49) - Improved content description message for ConfirmationOverlay (I0fdf8)
- Update
ConfirmationOverlay
with new icons/layout. (If5b54)
Bug Fixes
- Added ProGuard rules to ensure that ambient-related code is kept (Idaa10)
- Avoid accidentally dismissing of fragments in SwipeDismissFrameLayout with a vertical fling (Idb6d8)
- Fix ConfirmationOverlay when it has no message (I63e6f)
External Contribution
- Dae Gyu LEE (Samsung) - Avoid accidentally dismissing of fragments in SwipeDismissFrameLayout with a vertical fling (Idb6d8)
Version 1.3.0-alpha01
September 29, 2021
androidx.wear:wear:1.3.0-alpha01
is released. Version 1.3.0-alpha01 contains these commits.
Bug Fixes
ConfirmationOverlay
now pushes the icon up to accommodate longer messages, without the message entering the device's bezel (or off-screen). (I54bff)
Wear Ongoing & Interactions Version 1.1.0
Version 1.1.0-beta01
July 24, 2024
androidx.wear:wear-remote-interactions:1.1.0-beta01
is released. Version 1.1.0-beta01 contains these commits. The 1.3.0-beta01 release of Wear Remote Interactions indicates that this release of the library is feature complete and the API is locked (except where marked as experimental).
Version 1.1.0-alpha04
January 10, 2024
androidx.wear:wear-phone-interactions:1.1.0-alpha04
is released. Version 1.1.0-alpha04 contains these commits.
API Changes
- We have added
RemoteAuthClient.isRemoteAuthAvailable
which checks whether remote auth is available. (Ibc10c)
Version 1.1.0-alpha02
January 10, 2024
androidx.wear:wear-remote-interactions:1.1.0-alpha02
is released. Version 1.1.0-alpha02 contains these commits.
API Changes
- We have added
RemoteActivityHelper.isRemoteActivityHelperAvailable
which helps check whether the functionality of launching a remote activity is available. (I107a9) - We have updated
RemoteActivityHelper
's constructor to have optional parameter compatible in Java. (I75554)
Version 1.1.0-alpha01
June 21, 2023
androidx.wear:wear-remote-interactions:1.1.0-alpha01
is released. Version 1.1.0-alpha01 contains these commits.
Bug Fixes
- Improved how completion and error handling is done in
RemoteActivityHelper
. (I60d60)
External Contribution
- Remove Guava dependency from
wear-remote-interactions
and use smaller alternatives.
Wear-Phone-Interactions Version 1.1.0-alpha03
March 9, 2022
androidx.wear:wear-phone-interactions:1.1.0-alpha03
is released. Version 1.1.0-alpha03 contains these commits.
Bug Fixes
redirectUrl
fromOAuthRequest
now returns an empty String if there the redirect URL is not set in the given request URL. (I44242)
Wear-Phone-Interactions Version 1.1.0-alpha02
December 15, 2021
androidx.wear:wear-phone-interactions:1.1.0-alpha02
is released. Version 1.1.0-alpha02 contains these commits.
Bug Fixes
- Fix the errors in
RemoteAuthClient
documentation, including error in code sample snippet and the dead link toErrorCode
(I260e8)
Wear-Phone-Interactions Version 1.1.0-alpha01
September 15, 2021
androidx.wear:wear-phone-interactions:1.1.0-alpha01
is released. Version 1.1.0-alpha01 contains these commits.
API Changes
Wear Ongoing & Interactions Version 1.0.0
Wear-Phone-Interactions Version 1.0.1
December 15, 2021
androidx.wear:wear-phone-interactions:1.0.1
is released. Version 1.0.1 contains these commits.
Bug Fixes
- Fixed exception was thrown from the
BridgingManager
when trying to disable bridging notifications withoutexcludedTags
.
Wear-Phone-Interactions Wear-Remote-Interactions Version 1.0.0
September 15, 2021
androidx.wear:wear-phone-interactions:1.0.0
and androidx.wear:wear-remote-interactions:1.0.0
are released. Version 1.0.0 contains these commits.
Major features of 1.0.0
The Phone Interaction Library contains APIs for interactions from the Wearables to Phones. It contains the following:
PhoneDeviceType
, providing helper methods for determining the type of phone the current watch is paired to, for use on Wearable devices only.BridgingManager
,BridgingManagerService
andBridgingConfig
APIs to enable/disable notifications at runtime and optionally set tags for notifications that are exempt from the bridging mode.RemoteAuthClient
, providing support for remote authentication on Wearables together with support for adding OAuth PKCE extension. Additional handlers and helper classes for communication are provided.
The Remote Interaction Library contains APIs for interactions between the Wearables and Phones. It contains the following:
WatchFaceConfigIntentHelper
, providing helper functions to specify the ID and component name in the watch face configuration activities for the companion on the phone.RemoteActivityHelper
class which can be used for opening intents on other devices (i.e. from watch to phone).
Wear-Phone-Interactions Wear-Remote-Interactions Version 1.0.0-rc01
September 1, 2021
androidx.wear:wear-phone-interactions:1.0.0-rc01
and androidx.wear:wear-remote-interactions:1.0.0-rc01
are released. Version 1.0.0-rc01 contains these commits.
Bug Fixes
- Fix bug preventing errors raised within Google Play Services from being propagated to the caller when using RemoteActivityHelper (I60d60)
- Fix bug where RemoteActivityHelper would never fulfill its Future if there were no connected nodes, or if the requested nodeId was not found (I60d60)
Wear-Ongoing Version 1.1
Version 1.1.0-alpha01
August 23, 2023
androidx.wear:wear-ongoing:1.1.0-alpha01
is released. Version 1.1.0-alpha01 contains these commits.
API Changes
- Add a content description field to Ongoing Activity. This will be used by accessibility services to describe the Ongoing Activity. (I79fc6)
Bug Fixes
- Added
@RequiresPermission
to APIs that require granting thePOST_NOTIFICATIONS
permission on SDK 33 and above. (Ie542e, b/238790278)
Wear-Ongoing Version 1.0.0
September 1, 2021
androidx.wear:wear-ongoing:1.0.0
is released. Version 1.0.0 contains these commits.
Major features of 1.0.0
- The Wear Ongoing Activities API is an API for developers, including third party developers, used to mark their activity as an “Ongoing Activity”, and provide the needed information.
- Ongoing Activities refer to activities that could be running in the background of the watch (e.g. workouts, calls and media). On Wear 3, an activity declared as ongoing will be made more prominent through a dedicated overlay icon on the watchface and a different rendering in the app launcher.
- For more information, see the Wear Ongoing Activity Guide
Wear-Phone-Interactions Wear-Remote-Interactions Version 1.0.0-beta01
August 18, 2021
androidx.wear:wear-phone-interactions:1.0.0-beta01
and androidx.wear:wear-remote-interactions:1.0.0-beta01
are released. Version 1.0.0-beta01 contains these commits.
API Changes
- Renamed class
RemoteIntentHelper
toRemoteActivityHelper
. Renamed functionsRemoteIntentHelper#getRemoteIntentExtraIntent
andRemoteIntentHelper#getRemoteIntentNodeId
toRemoteActivityHelper#getTargetIntent
andRemoteActivityHelper#getTargetNodeId
, respectively. (Id2042)
Wear-Ongoing Version 1.0.0-rc01
August 18, 2021
androidx.wear:wear-ongoing:1.0.0-rc01
is released with no changes since 1.0.0-beta01
. Version 1.0.0-rc01 contains these commits.
Wear-Ongoing Version 1.0.0-beta01
August 4, 2021
androidx.wear:wear-ongoing:1.0.0-beta01
is released. Version 1.0.0-beta01 contains these commits.
API Changes
- Some setters on OngoingActivity.Builder now accept a null argument in order to give symmetry and consistency to the setters and getters (I17ee5)
Wear-Phone-Interactions Version 1.0.0-alpha07
August 4, 2021
androidx.wear:wear-phone-interactions:1.0.0-alpha07
is released. Version 1.0.0-alpha07 contains these commits.
API Changes
- Renamed
WearTypeHelper.isChinaDevice
toWearTypeHelper.isChinaBuild
. (I47302) - We have updated RemoteAuthClient library to automatically pick redirect_uri based on device type (RoW/China). (I38866)
- Fixed bug that caused converting BridgingConfig to/from Bundle to fail with ClassCastException. Added unit tests for BridgingManagerService class. (I68ecb)
Wear-Remote-Interactions Version 1.0.0-alpha06
August 4, 2021
androidx.wear:wear-remote-interactions:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
Wear-Phone-Interactions Version 1.0.0-alpha06
July 21, 2021
androidx.wear:wear-phone-interactions:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
API Changes
BridgingManagerSeviceBinder
class is now a subclass of Service and is renamed to BridgingManagerSevice. (I9fca2)- Method
RemoteAuthClient.Callback.onAuthorizationError
is changed to include OAuthRequest parameter. Methods requiring callback now also require an executor for the callback to be run on. (I35e11)
Bug Fixes
- We have made the authentication API clearer with more documented parameters and by using properties where possible. (I12287)
Wear-Phone-Interactions Version 1.0.0-alpha05
June 30, 2021
androidx.wear:wear-phone-interactions:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
Bug Fixes
- Documented parameters that should be passed in constructor for
BridgingConfig.Builder
.
Wear-Ongoing Version 1.0.0-alpha06
June 2, 2021
androidx.wear:wear-ongoing:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
API Changes
- Add Title field to Ongoing Activity. (I7a405)
Bug Fixes
SerializationHelper.copy()
now does a defensive copy of the information (I8b276)- Improved setCategory documentation (Iff01f)
Wear-Ongoing Version 1.0.0-alpha05
May 18, 2021
androidx.wear:wear-ongoing:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
API Changes
OngoingActivity
now has getters to retrieve all values directly set via the Builder (or the defaults taken from the associated Notification). (Id8ac8)- The new class
Status
is now used to create the status of the theOngoingActivity
OngoingActivityData
andOngoingActivityStatus
are no longer part of the public API.
- The new class
The classes
TextStatusPart
andTimerStatusPart
are no longer part of the public API. (I57fb6)- To create a
Part
with a static text, useStatus.TextPart
. - To create a
Part
with a stopwatch (counting up), useStatus.Stopwatch
- To create a
Part
with a timer (counting down), useStatus.Timer
- To create a
Wear-Ongoing Version 1.0.0-alpha04
May 5, 2021
androidx.wear:wear-ongoing:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
API Changes
- On OngoingActivity, the methods fromExistingOngoingActivity are now called recoverOngoingActivity.
- OngoingActivity now has a full set of getters, the same previously only available at OngoingActivityData. (I0ee4d)
Wear-Remote-Interactions Version 1.0.0-alpha05
July 21, 2021
androidx.wear:wear-remote-interactions:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
API Changes
We have added the
RemoteIntentHelper
class (previously RemoteIntent in the Wearable Support Library) which can be used for opening intents on other devices (i.e. from watch to phone). (I1d7e0)The PlayStoreAvailability class has been removed from the AndroidX library. To detect whether the Play Store is available on a connected phone, use the
androidx.phone.interactions.PhoneTypeHelper.getPhoneDeviceType
method to determine if the connected phone is an Android phone. Then use theandroidx.wear.utils.WearTypeHelper.isChinaDevice
method to determine if the connected phone is a Chinese device. If the phone is an Android phone and if it is not a Chinese device then the Play Store will be available. (Ie7dec)
Wear-Phone-Interactions Version 1.0.0-alpha04
April 7, 2021
androidx.wear:wear-phone-interactions:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
API Changes
- Updated
ErrorCode
constants to make the new library backwards compatible with the implementation in Wearable Support Library.
Bug Fixes
- Fixed exception caused by new OAuth API when starting an OAuth session.
Wear-Remote-Interactions Version 1.0.0-alpha03
April 7, 2021
androidx.wear:wear-remote-interactions:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
API Changes
- Changed
PlayStoreAvailability
to be a class that contains companion object with static methods. Usage stays the same.
Bug Fixes
- Fixed summary doc for
WatchFaceConfigIntentHelper
to correctly show sample code with actual HTML characters.
Wear-Ongoing Wear-Phone-Interactions Version 1.0.0-alpha03
March 10, 2021
androidx.wear:wear-ongoing:1.0.0-alpha03
and androidx.wear:wear-phone-interactions:1.0.0-alpha03
are released. Version 1.0.0-alpha03 contains these commits.
New Features
- Migrate OAuthClient from Wearable Support Library to AndroidX. This migrated class is renamed to RemoteAuthClient and it gives support for remote authentication on Wearables together with support for adding OAuth PKCE extension. Additional handlers and helper classes for communication are provided.
- Ongoing activities can now be associated with a Notification that has a tag, using the new OngoingActivity.Builder constructor.
API Changes
- Added support for notification tags on the Ongoing Activities Library (I653b4)
- Migrate OAuthClient from Wear Support Library to AndroidX, and add support for OAuth PKCE extension (I3eaaa)
Wear-Remote-Interactions Version 1.0.0-alpha02
March 10, 2021
androidx.wear:wear-remote-interactions:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
New Features
- Migrating PlayStoreAvailability class from Wearable Support Library to AndroidX which provides an API for checking whether the Play Store is available on the Phone.
Bug Fixes
- Migrating PlayStoreAvailability class from Wearable Support Library to AndroidX. (I69bfe)
Version 1.0.0-alpha02
February 10, 2021
androidx.wear:wear-ongoing:1.0.0-alpha02
and androidx.wear:wear-phone-interactions:1.0.0-alpha02
are released. Version 1.0.0-alpha02 contains these commits.
API Changes
- Added support for more complex status. They are composed of a template (or several) and a series of Parts that will be used to fill the template's placeholders. OngoingActivityStatus now has a static method to create simple statuses with only one part (a Text or a Timer), and a Builder to create more complex statuses. (I1fe81)
- Move BridgingManager and BridgingConfig classes from Wear Support Library to AndroidX which provides APIs to enable/disable notifications at runtime and optionally set tags for notifications that are exempt from the bridging mode. (I3a17e)
Version 1.0.0-alpha01
January 27, 2021
androidx.wear:wear-ongoing:1.0.0-alpha01
, androidx.wear:wear-phone-interactions:1.0.0-alpha01
, and androidx.wear:wear-remote-interactions:1.0.0-alpha01
are released. Version 1.0.0-alpha01 contains these commits.
API Changes
Migrate the Ongoing Activities library to a new sub-library: wear-ongoing. Classes now live in the androidx.wear.ongoing package (previously was androidx.wear.ongoingactivities) (I7c029)
Create a new support library to contain classes that support interactions from the Wearables to Phones. It is initially populated with classes migrated from Wearable Support Library. (Id5180)
Migrate PhoneDeviceType class from Wearable Support Library to AndroidX. The migrated class is renamed as PhoneTypeHelper which provides helper methods for determining the type of phone the current watch is paired to, for use on Wearable devices only. (Ibd947)
Create a new support library to contain classes that support interactions between the Wearables and Phones. It is initially populated with classes migrated from Wearable Support Library. (I9deb4)
Migrate WatchFaceCompanion class from Wearable Support Library to AndroidX. The migrated class is renamed as WatchFaceConfigIntentHelper which provides helper functions to specify the ID and component name in the watch face configuration activities in companion on the phone, it can also be used locally to configure the watch face on the wearable device. (Ia455f)
Wear Complications and Watchface 1.0.0
Version 1.0.0-alpha22
September 15, 2021
androidx.wear:wear-*:1.0.0-alpha22
is released. Version 1.0.0-alpha22 contains these commits.
New Features
- The EditorSession now subscribes to lifecycle observers so you no longer have to explicitly close it when your activity goes away.
API Changes
- EditorSession and ListenableEditorSession now use kotlin StateFlows for complicationSlotsState, ComplicationsPreviewData and ComplicationsDataSourceInfo. (I761d9)
- EditorSession#userStyle is now a
MutableStateFlow<UserStyle>
(I32ca9) - EditorSession.createOnWatchEditorSession now uses a lifecycle observer and it automatically closes when it observes onDestroy. In addition
createOnWatchEditorSession
now only requires the activity to be passed in. Identical changes have also been applied to ListenableEditorSession. (Ic6b7f) - CustomValueUserStyleSetting's constructor has been reinstated as part of the public API. (I2e69a)
UserStyle
now inherits fromMap<UserStyleSetting, UserStyleSetting.Option>
andMutableUserStyleSetting#put
throws IllegalArgumentException if the setting is not in the schema or if the option doesn't match the setting. (Iba40f)
Version 1.0.0-alpha21
September 1, 2021
androidx.wear:wear-*:1.0.0-alpha21
is released. Version 1.0.0-alpha21 contains these commits.
API Changes
- All public watch face, client, editor and complication APIs now use java.time.Instant for times rather than a Long, as a consequence the minimum API level has increased to 26. (I3cd48)
- The watchface and complication APIs now use the immutable ZonedDateTime instead of Calendar. (I25cf8)
- ComplicationSlots are now initialized with NoDataComplicationData, ComplicationSlot.complicationData now always has a value and CanvasComplicationDrawable.complicationData is no longer nullable. (I4dfd6) This reduces (but doesn’t eliminate) complication flickering when switching between watch faces.
Version 1.0.0-alpha20
August 18, 2021
androidx.wear:wear-*:1.0.0-alpha20
is released. Version 1.0.0-alpha20 contains these commits.
API Changes
- We have added createFallbackPreviewData to ComplicationDataSourceInfo which can be used when ComplicationDataSourceInfoRetriever.retrievePreviewComplicationData returns null. (I38c4d)
- ComplicationDataSourceUpdateRequester has been turned into an interface to allow mocking in unit tests. You can construct a concrete ComplicationDataSourceUpdateRequester with ComplicationDataSourceUpdateRequester.create(). (I7da22)
- RenderParameters.pressedComplicationSlotIds has been replaced by RenderParameters.lastComplicationTapDownEvents which exposes the new TapEvent class which contains a triple of x, y coordinates of the tap in pixels and a time stamp.
WatchFace.TapListener.onTap
has been replaced byonTapEvent(@TapType tapType: Int, tapEvent: TapEvent)
. In addition,InteractiveWatchFaceClient.displayPressedAnimation
has been removed. (Id87d2) - Added explicit threading annotation for setImportantForAccessibility (I990fa)
- ComplicationSlotBoundsType has been moved to androidx-wear-watchface.ComplicationSlotBoundsType in wear/wear-watchface. (I09420)
- We have added support for passing string resource ids into UserStyleSetting and Options. This is now the recommended way to construct those objects. (I03d5f)
- Limits have been imposed upon the maximum wire size of a UserStyle Schema. Also Icons in the schema must not be bigger than 400x400 pixels. (I3b65b)
- We added a MutableUserStyle class to support changes to UserStyle instances (I95a40)
- We have renamed
ListenableWatchFaceMetadataClient.Companion#listenableCreateWatchFaceMetadataClient
toListenableWatchFaceMetadataClient.Companion#createListenableWatchFaceMetadataClient
. (I64ce2) - We've modified EditorState.previewComplicationsData to only contain data for enabled complications, and we've added
EditorSession.DEFAULT_PREVIEW_TIME_MILLIS
which if passed torenderWatchFaceToBitmap
orPreviewScreenshotParams
requests rendering with the watch face's default preview time. (If7b3c) - We have removed UserStyleSetting constructors taking CharSequence from the public API. It's recommended to use the constructors that require StringResource IDs instead. (I8537b)
CurrentUserStyleRepository.UserStyleChangeListener
now supports SAM conversion. (I85989)
Version 1.0.0-alpha19
August 4, 2021
androidx.wear:wear-*:1.0.0-alpha19
is released. Version 1.0.0-alpha19 contains these commits.
API Changes
- We've added
ListenableWatchFaceMetadataClient.listenableCreateWatchFaceMetadataClient
which provides aListenableFuture
wrapper forWatchFaceMetadataClient.createWatchFaceMetadataClient
. (I5fa37) UserStyleOption.getOptionForId
now acceptsUserStyleOption.Id
instead of a byte array. (I469be)- Provide constants
BooleanOption.TRUE
andBooleanOption.FALSE
and disallow instance creation (I46e09) - Methods in wear-watchface-client that can throw RemoteException have now been annotated accordingly. (Ib8438)
- For consistency we've renamed
EditorSession.createOnWatchEditingSession
tocreateOnWatchEditorSession
, similarlycreateHeadlessEditingSession
is nowcreateHeadlessEditorSession
. Their guava wrappers have also been renamed. (I1526b) EditorSession
is now an interface andListenableEditorSession.commitChangesOnClose
is now properly delegated. (I7dc3e)- We now reject any user style schema that has settings or options with conflicting IDs (Ic2715)
- We have added an overloaded
UserStyle.get
which acceptsUserStyleSetting.Id
. (I2aa0f)
Version 1.0.0-alpha18
July 21, 2021
androidx.wear:wear-*:1.0.0-alpha18
is released. Version 1.0.0-alpha18 contains these commits.
API Changes
- We moved
ComplicationHelperActivity
toandroidx.wear:wear-watchface
library. (I39e76) - For consistency and clarity,
ComplicationProvider
has been renamed toComplicationDataSource
and all classes with Provider in their name have been similarly renamed. (Iaef0b) CanvasComplication.isHighlighted
has been moved intoRenderParameters.pressedComplicationSlotIds
this is a step towards makingCanvasComplication
stateless. To support this changeCanvasComplication.render
now also takes theslotId
as a parameter and we now pass theComplicationSlot
intoGlesTextureComplication
. (I50e6e)- We have added
headlessDeviceConfig
toEditorRequest
, if non null this parameter is used to construct a headless instance to back the EditorSession rather than acting on the interactive instance. This allows the editor to be invoked for a watch face that isn't the current one. (I0a820) - We've added an experimental
WatchFaceMetadataClient
which allows efficient retrieval of static watch face metadata such as theUserStyleSchema
and fixed details aboutComplicationSlots
. (I6bfdf) - We have renamed
CanvasRenderer.uiThreadInit
to init. (I6fff9) - We've added PreviewScreenshotParams an optional new parameter for EditorRequest which instructs EditorSession to take a preview screenshot on commit with these parameter. The preview image is exposed on
EditorState.previewImage
. (Ic2c16)
Bug Fixes
- Developers no longer need to add ComplicationHelperActivity to their own manifest. (I6f0c2)
Version 1.0.0-alpha17
June 30, 2021
androidx.wear:wear-*:1.0.0-alpha17
is released. Version 1.0.0-alpha17 contains these commits.
New Features
In
GlesRenderer
,makeUiThreadContextCurrent
andmakeBackgroundThreadContextCurrent
have been replaced byrunUiThreadGlCommands
andrunBackgroundThreadGlCommands
which both accept aRunnable
. The library ensures that only one GL command runnable is executing at any given time.To make UiThread initialziaion easier we’ve added
CanvasRenderer.uiThreadInit
which is called once on the UiThread before any calls to render. We’ve also addedonRendererCreated
toCanvasComplication
which makes it easier forRenderer
andCanvasComplication
to share state.For clarity we have renamed
Complication
toComplicationSlot
andcomplicationId
to eithercomplicationSlotId
orcomplicationInstanceId
depending on usage
API Changes
- For clarity we have renamed
Complication
toComplicationSlot
andcomplicationId
to eithercomplicationSlotId
orcomplicationInstanceId
depending on usage. Classes using Complication have similarly been renamed e.g. ComplicationsManager is now called ComplicationSlotsManager. (I4da44) - In GlesRenderer
makeUiThreadContextCurrent
andmakeBackgroundThreadContextCurrent
have been replaced byrunUiThreadGlCommands
andrunBackgroundThreadGlCommands
which both accept aRunnable
. These functions are only needed if you need to make GL calls outside of render,runBackgroundThreadGlCommands
andonUiThreadGlSurfaceCreated
. This is required because there can be multiple GlesRenderers each with their own contexts in the same process, potentially from different watch faces. In addition access to the shared current GL context is now synchronized. (I04d59) - We have added
CanvasRenderer.uiThreadInit
which is called once on the UiThread before any calls to render. Also for clarity in GlesRenderer we have renamedonGlContextCreated
toonBackgroundThreadGlContextCreated
, andonGlSurfaceCreated
toonUiThreadGlSurfaceCreated
. (If86d0) HeadlessWatchFaceClient
&InteractiveWatchFaceClient
getComplicationsSlotState
has been renamed togetComplicationSlotsState
. InComplicationSlot
:createRoundRectComplicationBuilder
,createBackgroundComplicationBuilder
, andcreateEdgeComplicationBuilder
have been renamed tocreateRoundRectComplicationSlotBuilder
,createBackgroundComplicationSlotBuilder
, andcreateEdgeComplicationSlotBuilder
respectively. (Ib9adc)- We have added onRendererCreated to CanvasComplication which makes it easier for Renderer and CanvasComplication to share state. (I5e1ac)
Version 1.0.0-alpha16
June 16, 2021
androidx.wear:wear-*:1.0.0-alpha16
is released. Version 1.0.0-alpha16 contains these commits.
New Features
- We’ve fixed a number of bugs related to the recent threading model changes as well as addressing other issues with the on watch face editor.
Bug Fixes
- Prevent NPE in
onComplicationProviderChooserResult
(b/189594557) - Fix issues with stale surfaces and drawBlack (b/189452267)
- Fix race in accessing
complicationsManager.watchState
(b/189457893) - Fix background thread lifetime bug (b/189445428)
- Fix Pre-R Watch face Editor issues (b/189126313)
- Don't update direct boot params for editor style changes (b/187177307)
Version 1.0.0-alpha15
June 2, 2021
androidx.wear:wear-*:1.0.0-alpha15
is released. Version 1.0.0-alpha15 contains these commits.
New Features
The majority of watch face initialization is now done on a background thread, however after loading all watch face rendering etc is done on the UiThread. There is a memory barrier between loading and rendering so most user watch faces don’t need to do anything special. Watch faces using GLES may be an exception since the context is thread specific and we create two linked contexts so it’s possible to upload GL resources (e.g. textures and shaders) on the background thread and use them on the UiThread.
We have split the construction of watchfaces into three functions: createUserStyleSchema, createComplicationsManager and createWatchFace. We assume that createUserStyleSchema and createComplicationsManager are fast and createWatchFace may take some time to load assets. Taking advantage of this we have introduced WatchFaceControlClient.getDefaultProviderPoliciesAndType
which returns a map of Complication Ids to DefaultComplicationProviderPolicies and the default ComplicationType. This is faster than creating a headless instance since it doesn’t need to fully initialize the watch face to perform the query.
Finally complications are now constructed with a CanvasComplicationFactory which allows for lazy construction of the CanvasComplication renderers.
API Changes
- Replaced
@TargetApi
with@RequiresApi
. (I0184a, b/187447093, b/187447094) - We have introduced
WatchFaceControlClient.getDefaultProviderPoliciesAndType
which returns a map of Complication Ids to DefaultComplicationProviderPolicies and the default ComplicationType. Where possible a fast path is used that avoids fully constructing a watch face. To facilitate this the WatchFaceService API has had to change with two new methods being: createUserStyleSchema and createComplicationsManager the results of which are passed into createWatchFace. In addition Complications are now constructed with a CanvasComplicationFactory which allows for lazy construction of the CanvasComplication renderers. (Iad6c1) - We have removed MOST_RECENT_APP from SystemProviders. (I3df00)
- ObservableWatchData is now a sealed class. (Ic940d)
- CanvasComplicationFactory.create (which is typically io bound) is now called on a background thread for each complication before ui thread rendering commences. There is a memory barrier between construction and rendering so no special threading primitives are required. (Ia18f2)
- Watchface construction is now done on a background thread although all rendering is done on the ui thread, GlesRenderer supports two linked contexts to support this. WatchFaceControlClient.createHeadlessWatchFaceClient and WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient may resolve before WatchFaceService.createWatchFace has completed. Subsequent API calls will block until watchFace initialization has completed. (Id9f41)
- EXPANSION_DP and STROKE_WIDTH_DP are no longer visible in api.txt. (I54801)
- We have made EditorSession.createOnWatchEditingSession throw TimeoutCancellationException if there's an error instead of sending a null session. Additionally, the return value of EditorRequest.createFromIntent and EditorSession.createOnWatchEditingSession is now NonNull. (I41eb4)
Version 1.0.0-alpha14
May 18, 2021
androidx.wear:wear-*:1.0.0-alpha14
is released. Version 1.0.0-alpha14 contains these commits.
New Features
EditorSession.openComplicationProviderChooser
now returns ChosenComplicationProvider which contains the complication id,ComplicationProviderInfo
and a Bundle containing any additional extras returned by the provider chooser.- In addition we have been steadily migrating code to Kotlin and the majority of the watch face API is now defined in Kotlin.
API Changes
- GlesRenderer properties
eglContext
andeglDisplay
are now non-nullable. Any GL errors are now reported viaGlesRenderer.GlesException
rather than via RuntimeExceptions. (Ib1005) - We have migrated
androidx.wear.watchface.complications.rendering.ComplicationDrawable
from Java to Kotlin (Ibc3eb) - We have migrated
androidx.wear.watchface.complications.rendering.ComplicationStyle
from Java to Kotlin (I3375e) - We added information about the complication provider for each complication within EditorSession. (I37f14)
- We extended the result of
EditorSession.openComplicationProviderChooser
to include information returned by the chosen. (Iead6d)
Wear Complications & Watchface Version 1.0.0-alpha13
May 5, 2021
androidx.wear:wear-*:1.0.0-alpha13
is released. Version 1.0.0-alpha13 contains these commits.
New Features
Watch faces can have important visual elements beyond showing the time and complications. To provide screen reader support for this, watchface can now specify accessibility ContentDescriptionLabels via the Renderer's additionalContentDescriptionLabels property. In addition, to control the ordering of ContentDescriptionLabels accessibilityTraversalIndex has been added to complications. This can be modified by a ComplicationsUserStyleSetting.
To encourage developers to carefully consider screen readers we have made
ShortTextComplicationData.Builder
's,LongTextComplicationData.Builder
's andRangedValueComplicationData.Builder
'scontentDescription
field mandatory to be passed into their constructors. IfComplicationText.EMPTY
is passed in for thecontentDescription
, acontentDescription
will be automatically generated from the text and title.WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient
now throwsServiceStartFailureException
if the watchface throws an exception during init, this makes it much easier to diagnose issues during watch face startup.
API Changes
- We added support for having a null component name in ComplicationProviderInfo, which is needed to support older versions of Wear OS. (I744d2)
- We have migrated
androidx.wear.complications.SystemProviders
from Java to Kotlin. (Ia1f8b) - We have hidden all classes from public API that are in android.support.wearable.complications and created corresponding wrappers in AndroidX where needed. (I7bd50)
- We have renamed method in
TimeDifferenceComplicationText.Builder
fromsetMinimumUnit
tosetMinimalTimeUnit
. (I20c64) - We have made
ShortTextComplicationData.Builder
's,LongTextComplicationData.Builder
's andRangedValueComplicationData.Builder
'scontentDescription
field mandatory to be passed in constructor. (I8cb69) - We have renamed ComplicationProviderService.onComplicationUpdate to onComplicationRequest and encapsulated id and type parameter of this method into data ComplicationRequest. Corresponding listener has been renamed to ComplicationRequestListener and its method ComplicationRequestListener.onComplicationData. (Iaf146)
- We have removed method
isActiveAt
fromComplicationData
and exposed fieldvalidTimeRange
instead of it. This method call can be replaced withvalidTimeRange.contains
. (I65936) - We have changed description of the method ComplicationProviderService.onComplicationActivated to receive a ComplicationType instead of an int. (Idb5ff)
- Migrated ProviderUpdateRequester from Java to Koltin. (Ibce13)
- GlesRender.makeContextCurrent is now public. Watch face code may need to make gl calls outside of render and onGlContextCreated and because there may be both an interactive and a headless context its necessary to call this. (I8a43c)
- WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient now throws ServiceStartFailureException if the watchface throws during init. In addition WatchFaceService now throws an exception if createWatchFace takes longer than 6 seconds. (I59b2f)
- We have removed the unused id property of
GlesTextureComplication
. (I28958) - The watchface can now specify accessibility ContentDescriptionLabels via the
Renderer
's additionalContentDescriptionLabels property. In addition to controlling the ordering of ContentDescriptionLabels accessibilityTraversalIndex has been added to complications. This can be modified by a ComplicationsUserStyleSetting. (Ib7362) - Expand documentation about touch event handling in the watch face. (Iaf31e)
Bug Fixes
EditorSession.getComplicationsPreviewData()
now returns a map for every rather only non-empty complications. An instance of EmptyComplicationData is used for empty complications. (I1ef7e)
Wear Complications & Watchface Version 1.0.0-alpha12
April 21, 2021
androidx.wear:wear-*:1.0.0-alpha12
is released. Version 1.0.0-alpha12 contains these commits.
New Features
Watch face editors need to highlight parts of the watch face to help convery which aspect of a watch is being configured. We’ve extended RenderParameters to allow styles as well as complications to be highlighted. There’s a new optional HighlightLayer which is intended to be matted on top of the watch face with alpha transparency (the screenshot apis can do this matting for you, or provide the HighlightLayer on its own for maximum flexibility). E.g. suppose you had a style that lets you configure the appearance of the watch hands, your renderer in its renderHighlightLayer can draw an outline around them.
To encourage Complication Provider support for accessibility we have made PhotoImageComplicationData.Builder's, MonochromaticImageComplicationData.Builder's and SmallImageComplicationData.Builder's contentDescription field to be a mandatory constructor argument. ComplicationTapFilter and Complication.createEdgeComplicationBuilder have been added to support edge complications (drawn around the edge of the screen). Rendering and hit testing of edge complications is left up to the watch face. Edge hit testing isn't supported from the companion editor.
API Changes
- Added
PROVIDER_
prefix to constants in SystemProviders. (I1e773) - We have made
PhotoImageComplicationData.Builder
's,MonochromaticImageComplicationData.Builder
's andSmallImageComplicationData.Builder
'scontentDescription
field mandatory to be passed in constructor. (I9643a) ProviderInfoRetriever.requestPreviewComplicationData
has been renamed toretrievePreviewComplicationData
. (I911ee)- Migrated
ComplicationProviderService
from Java to Koltin. (I849f2) - Method
ComplicationProviderService.onBind
is now final (I39af5) - We've reinstated interface
CanvasComplication
and movedCanvasComplicaitonDrawable
,GlesTextureComplication
andComplicationHighlightRenderer
towear-watchface-complications-rendering
. (I84670) RenderParameters
has been refactored to support extended highlight rendering. It's now possible to request rendering of highlights for styles as well as all or a single complication. In addition CanvasRenderer and GlesRenderer how have a new abstract renderHighlightLayer method for rendering any highlighting requested by the editor. Layer has been renamed to WatchFaceLayer. (Ic2444)ComplicationTapFilter
andComplication.createEdgeComplicationBuilder
have been added to support edge complications. Rendering and hit testing of edge complications is left up to the watch face. Hit testing isn't supported from within editors. (Ia6604)- For
DoubleRangeUserStyleSetting
&LongRangeUserStyleSetting
:defaultValue
,maximumValue
andminimumValue
are now kotlin properties. In addition,UserStyleSetting.Option
functions like toBooleanOption, toCoplicationOptions, toListOption and similar have been removed. (I52899) - Add chin size to the properties of the device available to the watch face. (I76e1e)
ComplicationHighlightRenderer
's constructor now acceptsoutlineExpansion
andoutlineStrokeWidth
parameters. (I87009)ComplicationDrawable.getNoDataText
is now part of the public API. (I00598)
Version 1.0.0-alpha11
April 7, 2021
androidx.wear:wear-*:1.0.0-alpha11
is released. Version 1.0.0-alpha11 contains these commits.
New Features
- More polish has been applied to the watch face APIs. Most of the changes are simple renamings but
InteractiveWatchFaceWcsClient
andInteractiveWatchFaceSysUiClient
have been merged intoInteractiveWatchFaceClient
.
API Changes
- ContentDescriptionLabel.text is now a ComplicationText rather than the old wearable support library TimeDependentText. (I80c03)
SystemProviders.GOOGLE_PAY
is not guaranteed to be present on all Android R devices so it has been removed from the list. It's still possible to use this provider viaDefaultComplicationProviderPolicy
(If01b5)- We've renamed ComplicationUpdateCallback to ComplicationUpdateListener for consistency. (I61ec7)
- The UserStyle wire format map has been changed to
Map<String, byte[]>
and for convenience aUserStyleData
class has been added to the public API and is now used by wear-watchface-client and wear-watchface-editor. In addition CustomValueUserStyleSetting.CustomValueOption.value is nowbyte[]
instead ofString
. (Iaa103) UserStyleSetting
andUserStyleSetting.Option
now useUserStyleSetting.Id
andUserStyleSetting.Option.Id
respectively to store their ids rather than a String. (I63f72)InteractiveWatchFaceClient.SystemState
has been renamed toWatchUiState
. (I6a4e0)InteractiveWatchFaceWcsClient
andInteractiveWatchFaceSysUiClient
have been merged because it was hard to explain the division of responsibility (Iff3fa)- Layer enum values have been renamed for clarity.
Layer#TOP_LAYER
is nowLayer#COMPLICATIONS_OVERLAY
andLayer#BASE_LAYER
is nowLayer#BASE
(Ia144e) UserStyleListener
has been renamed toUserStyleChangeListener
(I18524)UserStyleRepository
has been renamed toCurrentUserStyleRepository
(I6ea53)InteractiveWatchFaceWcsClient.updateInstance
has been renamed toupdateWatchfaceInstance
. (I321dc)- WatchFace TapType events have been renamed to align with MotionEvents / Compose. (I0dfd0)
- takeWatchfaceScreenshot has been renamed to renderWatchFaceToBitmap, and takeComplicationScreenshot has been renamed to renderComplicationToBitmap (Ie0697)
- The CanvasComplication interface has been removed in favor of the open class CanvasComplicationDrawable. (I1f81f)
WatcfaceControlServiceFactory
has been removed from the public api. (I1f8d3)- We've renamed
CanvasComplication.setData
toCanvasComplication.loadData
. (If1239) ComplicationsManager.bringAttentionToComplication
has been renamed todisplayPressedAnimation
. (Ic4297)WatchFaceService.createWatchFace
now has an@UiThread
annotation. (Ib54c2)- Changed the name of a CanvasComplicationDrawable parameter to fix a bug. (I50dac)
- We've added
HeadlessWatchFaceClient.toBundle()
andHeadlessWatchFaceClient.createFromBundle
to support sendingHeadlessWatchFaceClient
over AIDL. (I07c35) - HeadlessWatchFaceClient and InteractiveWatchFaceClient now have ClientDisconnectListener and isConnectionAlive() to allow you to observe if the connection is broken for some reason (e.g. the watchface being killed). (Ie446d)
WatchFaceControlClient#getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClientAsync
is now a suspend function and has been renamed togetOrCreateInteractiveWatchFaceClient
. (Ib745d)EditorState.commitChanges
andhasCommitChanges()
has been renamed toshouldCommitChanges()
. (I06e04)previewComplicationData
has been renamed topreviewComplicationsData
to indicate theres (usually) more than one complication in the map. (I56c06)InteractiveWatchFaceWcsClient.bringAttentionToComplication
has been renamed todisplayPressedAnimation
for consistency withComplicationsManager.displayPressedAnimation
. (Ic9999)- All instances of watchface instance id have been encapsulated in a new WatchFaceId class (I45fdf)
complicationState
property has been renamed tocomplicationsState
to indicate plurality. (Ided07)- We've removed the various wear-watchface-client Binder conversions, they should be necessary. (Icc4c0)
- For consistency
EditorServiceClient
has been refactored to use listeners instead of observers. (Iec3a4) - We've added a couple of missing
@Px
annotations toInteractiveWatchFaceSysUiClient
andWatchFaceControlClient
. (I3277a) - Renamed EditorObserverCallback to EditorObserverListener for consistency. (Ie572d)
- EditorState.watchFaceInstanceId is restricted to Android R API level and above and is no longer nullable. (Id52bb)
EditorSession.launchComplicationProviderChooser
has been renamed toopenComplicationProviderChooser
. (I9d441)EditorSession.createOnWatchEditingSessionAsync
has been renamed tocreateOnWatchEditingSession
and is now a suspend function. (Id257b)- Added several missing
@UiThread
annotations onEditorSession
. (I6935c) UserStyleSetting.affectsLayers
has been renamed toaffectedLayers
. (I6e22b)
Version 1.0.0-alpha10
March 24, 2021
androidx.wear:wear-*:1.0.0-alpha10
is released. Version 1.0.0-alpha10 contains these commits.
New Features
- It’s now possible to create open gl objects (e.g. textures) during WatchFaceService.createWatchFace because GlesRenderer now requires an explicit call to initOpenGLContext which can be done inside createWatchFace.
API Changes
IdAndComplicationData
was a bit awkward and has been removed from the public API. Classes & interfaces that used it have been refactored. (I4c928)- We've replaced
ReferenceTime
withCountUpTimeReference
andCountDownTimeReference
which are more self explanatory. (Ib66c6) - Added some missing
@Px
and@ColorInt
annotations. (I9bbc3) Complication.complicationConfigExtras
is now non-nullable and defaults toBundle.EMPTY
. (Iad04f)GlesRenderer
now requires you to callinitOpenGLContext
after construction. This function was an internal detail but is now on the public API to allow GL calls earlier inside createWatchFace. (I726c2)- We've removed
Complication.setRenderer
as it should not be needed. (Ie992f) Complicaiton.setComplicationBounds
is no longer part of the public API. If you need to adjust the position of a complication, this can be done viaComplicationsUserStyleSetting
. (Ibd9e5)ComplicationsManager.TapCallback.onComplicationSingleTapped
has been renamed toonComplicationTapped
. (I3a55c)ComplicationOutlineRenderer.drawComplicationSelectOutline
has been renamed todrawComplicationOutline
. (I14b88)
Version 1.0.0-alpha09
March 10, 2021
androidx.wear:wear-complications-*:1.0.0-alpha09
and androidx.wear:wear-watchface-*:1.0.0-alpha09
are released. Version 1.0.0-alpha09 contains these commits.
New Features
- The interface between WCS/SysUI host and the on watch face has evolved. It’s now possible for an editor to determine if a style change will enable or disable a complication (enabled = initiallyEnabled plus any override from ComplicationsUserStyleSetting). Also
EditorService.closeEditor
allows SysUI to remotely close an on watch face editor if needed. - In addition
InteractiveWatchFaceWcsClient.setUserStyle
with a more powerful commandupdateInstance
which: changes the instance ID, sets the style, and clears complications all in one go.
API Changes
- TraceEvents have been added to the watchface libraries. (I1a141)
ComplicationState
now has a new propertyinitiallyEnabled
which is useful for predicting the consequences of switching styles. (I8c905)- We've replaced
InteractiveWatchFaceWcsClient.setUserStyle
with a more powerful commandupdateInstance
which: changes the instance ID, sets the style, and clears complications. (Ife6f6) - WatchFaceClient screenshot APIs no longer compress the screenshots because that was slow, instead we leave any post processing up to the caller. (Id35af)
- It's now possible to remotely close an on watchface editor via
EditorService.closeEditor
. (Ic5aa4) - Added nullability annotations (Ic16ed)
Version 1.0.0-alpha08
February 24, 2021
androidx.wear:wear-*:1.0.0-alpha08
is released. Version 1.0.0-alpha08 contains these commits.
New Features
- Some watch faces are designed around one or more specific complications, to support this we’ve added Complication.Builder#setFixedComplicationProvider which if set to true prevents the user from changing the complication in that slot.
- The watchface libraries are Kotlin first and use coroutines (e.g. suspend functions). For Java users we’ve provided ListenableFuture wrappers to improve interoperability in the following libraries: wear/wear-watchface-guava, wear/wear-watchface-client-guava & wear/wear-watchface-editor-guava.
API Changes
- We've removed support for double taps on complications launching the provider chooser, this feature wasn't common in watchfaces and complicated the implementation of SysUI. (I3ef24)
- ProviderInfoRetriever methods may throw ServiceDisconnectedException if the binder closes unexpectedly. (Ib2cc4)
- From Android 11 onwards, there are restrictions on when the ProviderChooser can be run, in addition we'd like editors to be built with the new
wear-watchface-editor
so ComplicationHelperActivity is being removed from the public API. (Ib19c1) - Remove ComplicationText static methods in favor of builders. (Ibe399)
- We have introduced guava ListenableFuture wrappers for the various watch face library suspended methods. (I16b2c)
- For API clarity we've added a secondary constructor to RenderParameters which doesn't require a tint, for use with LayerModes other than
LayerMode.DRAW_OUTLINED
. (I497ea) - Previously ListUserStyleSetting was different from the other because it had a default argument. Now all the StyleSetting subclass constructors take the default value last. (I9dbfd)
- CanvasComplication has been refactored to use have a hidden method, which makes it easier to implement a subclass (I5b321)
- We have refactored away EditorResult in favor of a new EditorService and
EditorSession.broadcastState()
to stream updates to an observer (typically SysUI). (Ic4370) - Some watchfaces are built around a particular complication as an integral part of the watch face where the provider is not user configurable. To support this we've added
Complication.Builder#setFixedComplicationProvider
. (I4509e) - EditorRequest now specifies package name rather than ComponentName because it was inconvenient for SysUI to look up the class name of the editor, and we only really need the package name. (Ib6814)
Version 1.0.0-alpha07
February 10, 2021
androidx.wear:wear-*:1.0.0-alpha07
is released. Version 1.0.0-alpha07 contains these commits.
New Features
- WatchFaceService.createWatchFace is now a suspend function which means the watchface no longer has to block the ui thread while waiting for IO. Similarly wear-watchface-editor and wear-complications-data
API Changes
- Remove PhotoImage class and use Icon directly. (I8a70b)
- Expose the validTimeRange of ComplicationData. (I91366)
- Make image-like attributes more explicit. (I81700)
- wear-watchface-editor and wear-complications-data have been refactored to use suspend functions instead of coroutines. Rx java & Future compat wrappers to follow. (If3c5f)
- ProviderInfoRetriever now now throws PreviewNotAvailableException if requestPreviewComplicationData can't return preview data due to connection issues or lack of API support. (I4964d)
- WatchFaceControlService::createWatchFaceControlClient is now a suspended fuction and getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClient is now called getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClientAsync returning
Deferred<InteractiveWatchFaceWcsClient>
. RX java and Future compat wrappers to follow. (I5d461) - Rename
CATEGORY_PROVIDER_CONFIG_ACTION
toCATEGORY_PROVIDER_CONFIG
. (I7c068) - Please note createOnWatchEditingSession is now a suspended function because the watchface sometimes isn't available until shortly after the editor activity has started. (Ida9aa)
- WatchFaceService.createWatchFace is now a suspend function which allows for async initialization, previously you would have had to block the main thread. (If076a)
- UserStyle now has an array operator and we've added casting helpers to UserStyle.Option. (I35036)
- We've fixed a marshalling bug with UserStyle wireformats changing some of the unstable hidden API. (I8be09)
- We've added CustomValueUserStyleSetting which lets you store a single application specific string within a UserStyle. The default watch face editors will ignore this value. (Ic04d2)
- InstanceID is not passed in the intent extras for R and older versions of Android WearOS which we can't upgrade. To support this we now allow InstancID to be null. (Id8b78)
- EditorRequest now includes the editor ComponentName which is set as the component in WatchFaceEditorContract.createIntent (I3cd06)
- The watchface EditorResult now includes preview ComplicationData to allow the caller to take a screenshot of the watchface after editing. (I2c561)
Bug Fixes
- Added toString() overrides to UserStyle, UserStyleSetting and UserStyleSchema which makes working with these classes a bit nicer. (I9f5ec)
Version 1.0.0-alpha06
January 27, 2021
androidx.wear:wear-*:1.0.0-alpha06
is released. Version 1.0.0-alpha06 contains these commits.
New Features
- We’ve introduced a new library wear/wear-watchface-editor which allows watch face developers and potentially OEMs to build a style and complication editor. SysUI will send an Intent to the watch face which will use the new EditorSession class to access WatchFace details and record the result via Activity.setWatchRequestResult. To support this we’ve added ProviderInfoRetriever.requestPreviewComplicationData which allows watch face editors to request preview ComplicationData. The advantage of preview ComplicationData is unlike live data you don’t have to worry about showing permission dialogs when rendering your editor (note if a user selects a provider with a permission they will still be prompted to grant the permission).
API Changes
- ComplicationProviderInfo now has a field for the provider's ComponentName, support for this field will be added to WearOS at a later date and in the meantime, it will be null. (Id8fc4)
- We've added ProviderInfoRetriever.requestPreviewComplicationData which allows watch face editors to request preview ComplicationData. This is useful because live complications may require permissions and you can now display preview data for complications that are not active. (I2e1df)
- ComplicationManager is now an optional parameter of WatchFace constructor and the arguments have been reordered to allow this. (I66c76)
- We've added an optional Bundle to Complications which if set gets merged in with the intent sent to launch the provider chooser activity. (Ifd4ad)
- We've added a new
wear-watchface-editor
library to support on watch face and SysUi hosted editors. SysUI will launch these editors by sending an intent. The watch face activity service can use the new EditorSession class to access WatchFace details and record the result via Activity.setWatchRequestResult. (I2110d) - LayerMode.DRAW_HIGHLIGHTED is now called LayerMode.DRAW_OUTLINED and RenderParameters.highlightComplicationId is now called RenderParameters.selectedComplicationId which draws a highlight on the specified complication in addition to an outline. (I90a40)
- WatchFaceControlClient.getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClient's future can now resolve with a ServiceStartFailureException if the service dies while waiting for the watchface to be created. (I0f509)
- EditorSession.complicationPreviewData is now a ListenableFuture because fetching this data is an asynchronous process. (Iead9d)
Bug Fixes
- We're removing unused fields from ComplicationOverlay leaving enabled and complicationBounds. (I17b71)
Version 1.0.0-alpha05
January 13, 2021
androidx.wear:wear-*:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
New Features
Watchfaces often support a number of complication configurations with varying numbers of complications shown. To make this easier to set up we now support initially disabled complications by calling setEnabled(false) on the builder. These can be enabled later via ComplicationsUserStyleSetting.
API Changes
- ComplicationHelperActivity now accepts
Collection<ComplicationType>
rather than an int array making it easier to use. (I1f13d) ProviderInfoRetriever.retrieveProviderInfo
now correctly returnsListenableFuture<ProviderInfo[]>
. (If2710)- You can now create an initially disabled complication by calling setEnabled(false) on the builder. (Idaa53)
- WatchFaceState now has an isHeadless property which is only true for headless instances. (Ifa900)
- ComplicationDrawable now optionally supports synchronous loading of drawables. This is used by the screenshot APIs. (I34d4a)
Version 1.0.0-alpha04
December 16, 2020
androidx.wear:wear-*:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
New Features
- The wear watch face library now supports setting bounds per type. E.g. you can switch to a wide bounding box for ComplicationType.LONG_TEXT whilst using a smaller bounding box for other types.
API Changes
- Complications now use ComplicationBounds which wraps a
Map<ComplicationType, RectF>
to support per complication type sizes. (I1ebe7) - RenderParameters now lets you specify the highlight tint for use in screen shots. (Iff42b)
- With the exception of bounds you now have to use ComplicationsUserStyleSetting to modify complications, this is to ensure the OS is kept in sync. (I8dc5d)
- Renderer is now a sealed class. This means CanvasRenderer and GlesRenderer are now inner classes of Renderer. (Iab5d4, b/173803230)
- CanvasComplicationDrawable.drawHighlight renamed to drawOutline. ObservableWatchData now has a few missing UiThread annotations. ScreenState has now been fully removed from WatchState. (If1393)
- The minimum API level for wear-watchface is now 25. Note hardware canvas support requires API level 26 or above. (Ic9bbd)
- InteractiveWatchFaceWcsClient now has a getComplicationIdAt helper. (I05811)
- The API level for wear-watchface-client has been reduced to 25, however the screen shot APIs require API level 27. (Id31c2)
Bug Fixes
- We now expose the complication's current ComplicationData's ComplicationType in ComplicationState. (I9b390)
- InteractiveWatchFaceWcs now has a method `bringAttentionToComplication to briefly highlight the specified complication. (I6d31c)
InteractiveWatchFaceWcsClient#setUserStyle
now has an overload accepting Mapwhich can potentially avoid an extra IPC round trip necessary to construct UserStyle. (I24eec)
Version 1.0.0-alpha03
December 2, 2020
androidx.wear:wear-*:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
New Features
The Complication class now has a compicationData property letting watch faces observe ComplicationData changes. This makes it possible to change the complication’s dimensions based on the type of the complication.
Variable frame rates are now supported by assigning to Renderer.interactiveDrawModeUpdateDelayMillis. For watch faces which run short animations every second this can lead to good power savings by going to sleep when not animating.
API Changes
BACKGROUND_IMAGE
has been renamed toPHOTO_IMAGE
along with related classes. This type of complication is not exclusively used for backgrounds hence the name change. (I995c6)- DefaultComplicationProviderPolicy properly annotated with IntDefs. (I3b431)
- The hidden TimeDependentText class is no longer exposed via ContentDescriptionLabel, instead we add an accessor to get the text at a specified time. (Ica692)
- ObservableWatchData's constructor is now internal. (I30121, b/173802666)
- Complication now has compicationData letting watch faces observe ComplicationData changes. Complication also has a new isActiveAt call which can be used to tell if anything should be rendered at the provided datetime. (Ic0e2a)
- The empty
SharedMemoryImage
is no longer in the public API. (I7ee17) WatchFace.overridePreviewReferenceTimeMillis
now has an IntRange annotation and the getter and setter have consistent names. (Ia5f78)Complication.Builder
is now created viaComplication.createRoundRectComplicationBuilder
orComplication.createBackgroundComplicationBuilder
for clarity (I54063)- Added WatchFace.TapListener which allows taps not consumed by complications to be observed by the WatchFace. (Ic2fe1, b/172721168)
- WatchFace now supports variable frame rates by assigning to
Renderer.interactiveDrawModeUpdateDelayMillis
. This can help preserve battery life by sleeping when not animating. (I707c9) - WatchFace.Builder is no longer needed and invalidate() and interactiveUpdateRateMillis have been moved to Renderer. (I329ea)
- For better java interoperability renamed getters for boolean properties in WatchState (I6d2f1)
- Renamed TapListener to TapCallback and InvalidateCallback to InvalidateListener for consistency. (I9414e)
- Wear 2.0 watchface style options have been moved to their own class for clarity. WatchFace.Builder setters now have symmetrical WatchFace class getters. (Iefdfc)
- Added InteractiveWatchFaceWcsClient and
WatchFaceControlClient.getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClient
which either gets an existing instance or creates it once the wallaper service has connected and made the engine. (Id666e) - WatchFaceControlClient is now an interface to allow tests to mock it. (I875d9)
- HeadlessWatchFaceClient, InteractiveWatchFaceSysUiClientImpl, InteractiveWatchFaceWcsClient are now interfaces to better facilitate testing. (I7cdc3)
- Added annotations to methods in
wear-watchface-complications-rendering
(I0d65c)
Bug Fixes
- Remove screen shape from DeviceConfig, which was duplicating
android.content.res.Configuration#isScreenRound()
(Ifadf4) - Changed
WatchFaceControlClient.getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClient
to accept aMap<String, String>
instead ofUserStyle
because it's hard to create aUserStyle
without knowing the schema which you can only get after the client has been created. (Iea02a) - Fix
InteractiveWatchFaceWcsClient
to useComplicationState
instead of the wire format. (Icb8a4) UserStyleSettings
is now a sealed class because the watch face editors only understand the built in classes. (I2d797)
Version 1.0.0-alpha02
November 11, 2020
androidx.wear:wear-*:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
API Changes
ComplicationDetails
is now calledComplicationState
and is properly wrapped and usages of wearable support@ComplicationData.ComplicationType
have been migrated to androidxComplicationType
. (I4dd36)- Add an optional
highlightedComplicationId
parameter to RenderParameters which allows you to request highlighting of a single complication in screenshots. (I66ce9) ComplicationProviderService
to use new style complication api for consistency (Id5aea)getPreviewReferenceTimeMillis
now gets reference times fromDeviceConfig
. (I779fe)- Simplifying Renderer API surface, can use
SurfaceHolder.Callback
to observe changes instead. (I210db) CanvasComplicationRenderer
doesn't extend fromRenderer
, renaming it for clarity. (Ibe880)
Bug Fixes
- First version of
androidx.wear:wear-watchface-client
(I1e35e) - Changed the name of
GlesTextureComplication#renderer
for clarity (Ib78f7) - Rename
StyleCategory
toStyleSetting
for clarity (I488c7) - Adding
UserStyleSchema
for a cleaner API (If36f8)
Version 1.0.0-alpha01
October 28, 2020
androidx.wear:wear-complications-*:1.0.0-alpha01
and androidx.wear:wear-watchface-*:1.0.0-alpha01
are released. Version 1.0.0-alpha01 contains these commits.
API Changes
- Removed some things we didn't intend to expose in public api. (I41669)
- Create
androidx.wear:wear-complications-provider
library. (I77f1f) - ComplicationsUserStyleCategory the new recommended category for configuring complications (I96909)
- Add wear-complication-data API. (I7c268)
- Functions with boolean return values to be prefixed with “is” rather than “get” (If36ff)
- API advice is to avoid using protected so this class has been refactored to take parameters in via the constructor. (I61644)
- Rename setBackgroundComplication for clarity. (I96fe3)
- Use Kotlin properties for ComplicationDrawable isHighlighted & data (I4dcc8)
- Instead of ComplicationRenderer.InvalidateCallback we add Complication#invalidate() (I4f4c6)
- These APIs are being deprecated in WearableSupport and are removed here. (Ib425c)
- Renamed some WatchFace builder methods to emphasize their wear 2.0 legacy nature. (Idb775)
- First beta API candidate for wear/wear-watchface (Id3981)
- First tracked version of the API. (Ie9fe6)
- Properly hiding ComplicationDrawable.BorderStyle IntDef and move to ComplicationStyle for consistency. (I27f7a)
- Adding missing annotations for ComplicationStyle methods (I838fd)
- This library has no public API surface (I88e2b)
- All style category Option classes are now properly final. (Ib8323)
- First tracked version of the API. (I27c85)
Bug Fixes
- Changed ComplicationProviderService to have an explicit getComplicationPreviewData method. (I4905f)
- API lint check for MissingGetterMatchingBuilder is enabled for androidx (I4bbea, b/138602561)
- Rename wear-complications-rendering. (Ifea02)
- Style category display names are now CharSequences (I28990)
- Replacing Override with Overlay to match current themes & styles naming conventions. (I4fde9)
- Renamed UserStyle#getOptions for clarity. (I695b6)
Version 1.2.0
Version 1.2.0
September 15, 2021
androidx.wear:wear:1.2.0
is released. Version 1.2.0 contains these commits.
Important changes since 1.1.0
Added CurvedText component for easily writing curved text following the curvature of the largest circle that can be inscribed in the view. An usage example:
<androidx.wear.widget.CurvedText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="example curved text" app:anchorAngleDegrees="180" app:anchorPosition="center" app:clockwise="false" style="@android:style/TextAppearance.Large" />
Added ArcLayout container for laying out its child elements one by one on an arc in either the clockwise or counterclockwise direction. Its children can be both standard android widget or "curved" widgets which implement the
ArcLayout.Widget
interface. (I536da) An usage example:<androidx.wear.widget.ArcLayout android:layout_width="match_parent" android:layout_height="match_parent" app:anchorPosition="center"> <ImageView android:layout_width="20dp" android:layout_height="20dp" android:src="@drawable/ic_launcher" /> <androidx.wear.widget.CurvedText android:layout_width="match_parent" android:layout_height="match_parent" android:text="Curved Text" style="@android:style/TextAppearance.Small" android:padding="2dp" /> </androidx.wear.widget.WearArcLayout>
Added a new layout container, DismissibleFrameLayout, which handles back-button-dismiss and/or swipe-to-dismiss, intended for use within an activity. At least one listener must be added to act on a dismissal action. A listener will typically remove a containing view or a fragment from the current activity. setSwipeDismissible(boolean) & setBackButtonDismissible(boolean) are provided for direct control over the features. This new layout is meant to replace the existing SwipeDismissFrameLayout.
Added support for indicating that an Activity can be “auto-resumed” when the device leaves ambient mode in the AmbientModeSupport class. This functionality was previously available in the deprecated WearableActivity class from WearableSupportLibrary. (I336ab)
Migrated WearableCalendarContract class from Wearable Support Library. This API provides a subset of the data available through CalendarContract, but is automatically synced to wearable devices. (I6f2d7)
Added a new API
WearTypeHelper
inandroidx.wear.utils
for determining whether the given wear device is for China. (Ib01a9)Added accessibility features to
androidx.wear.widget.ConfirmationOverlay
that will read out messages if set followed by animation description. (I524dd)Fixed bug that caused ConfirmationActivity to crash if no message was provided. (Ie6055)
Fixed bug where horizontally scrolling RecyclerViews caused
WearableDrawerLayout
to peek on all interactions. (I24c7f)
Version 1.2.0-rc01
September 1, 2021
androidx.wear:wear:1.2.0-rc01
is released with no changes since the last beta. Version 1.2.0-rc01 contains these commits.
Version 1.2.0-beta01
August 18, 2021
androidx.wear:wear:1.2.0-beta01
is released. Version 1.2.0-beta01 contains these commits.
Bug Fixes
- Fix bug that caused ConfirmationActivity to crash if no message was provided. (Ie6055)
Version 1.2.0-alpha13
August 4, 2021
androidx.wear:wear:1.2.0-alpha13
is released. Version 1.2.0-alpha13 contains these commits.
API Changes
- Renamed
WearTypeHelper.isChinaDevice
toWearTypeHelper.isChinaBuild
. (I47302)
Bug Fixes
- We have added accessibility features to
androidx.wear.widget.ConfirmationOverlay
that will read out messages if set followed by animation description. (I524dd)
Version 1.2.0-alpha12
July 21, 2021
androidx.wear:wear:1.2.0-alpha12
is released. Version 1.2.0-alpha12 contains these commits.
API Changes
- We have added a new API
WearTypeHelper
inandroidx.wear.utils
for determining whether the given wear device is for China. (Ib01a9)
Version 1.2.0-alpha11
June 30, 2021
androidx.wear:wear:1.2.0-alpha11
is released. Version 1.2.0-alpha11 contains these commits.
Bug Fixes
- Fixed bug where horizontally scrolling RecyclerViews caused
WearableDrawerLayout
to peek on all interactions. (I24c7f)
Version 1.2.0-alpha10
June 2, 2021
androidx.wear:wear:1.2.0-alpha10
is released. Version 1.2.0-alpha10 contains these commits.
New Features
- Alpha10 improves accessibility support in Curved Text and ArcLayouts. It also add some minor renaming of in the DismissibleFrameLayout to help clarify the API.
API Changes
- We have renamed following methods in
DismissibleFrameLayout
(Ib195e):Callback#onDismissed
->Callback#onDismissedFinished
isSwipeDismissible
->isDismissableBySwipe
isBackButtonDismissible
->isDismissableByBackButton
- We have made following methods final (Ib195e):
setBackButtonDismissible
setSwipeDismissible
registerCallback
unregisterCallback
Bug Fixes
- Use the content of the CurvedTextView on Talkback. (I05798)
- Better accessibility for normal views in an ArcLayout. (I4418d)
Version 1.2.0-alpha09
May 18, 2021
androidx.wear:wear:1.2.0-alpha09
is released. Version 1.2.0-alpha09 contains these commits.
API Changes
- Added a new function
CurvedTextView.setTypeface()
(similar toTextView
's), to set the text typeface and bold/italics style. (I4653c) - Renamed
WearArcLayout
toArcLayout
,WearCurvedText
toCurvedText
andWearArcLayout.ArcLayoutWidget
toArcLayout.Widget
. (I6e5ce)- On
ArcLayout.Widget
, renamedgetThicknessPx
intogetThickness
. - Vertical alignment constants on
ArcLayout.LayoutParams
are now named starting withVERTICAL_ALIGN_
(instead of the previousVALIGN_
)
- On
- On
CurvedTextView
, the methodssetMinSweepDegrees
andsetMaxSweepDegrees
were replaced bysetSweepRangeDegrees
(I7a9d9)
Version 1.2.0-alpha08
May 5, 2021
androidx.wear:wear:1.2.0-alpha08
is released. Version 1.2.0-alpha08 contains these commits.
API Changes
- To improve code clarity, we added
@FloatRange
annotations to some angle parameters and return types. (I430dd) - In the interface
WearArcLayout.ArcLayoutWidget
, the methodinsideClickArea
is now called isPointInsideClickArea. (Ia7307)
Version 1.2.0-alpha07
March 24, 2021
androidx.wear:wear:1.2.0-alpha07
is released. Version 1.2.0-alpha07 contains these commits.
Bug Fixes
- Fixing errors with non-curved children inside of WearArcLayout caused by using screen size with height bigger than width. These non-curved children are now correctly placed inside of an arc on all screen types.
Version 1.2.0-alpha06
January 27, 2021
androidx.wear:wear:1.2.0-alpha06
is released. Version 1.2.0-alpha06 contains these commits.
API Changes
- Migrate the Ongoing Activities library to a new sub-library: wear-ongoing. Classes now live in the androidx.wear.ongoing package (previously was androidx.wear.ongoingactivities) (I7c029)
- Migrate WearableCalendarContract class from Wearable Support Library to AndroidX. This API provides a subset of the data available through CalendarContract, but is automatically synced to wearable devices. (I6f2d7)
Bug Fixes
- Disable the back button dismiss feature by default in Dismissible FrameLayout since swipe-to-dismiss remains as the main way to navigate back a full screen on Wearable devices (Ic24e3)
- Fixed some issues handling children visibility on WearArcLayout (Icf912)
Version 1.2.0-alpha05
January 13, 2021
androidx.wear:wear:1.2.0-alpha05
is released. Version 1.2.0-alpha05 contains these commits.
Bug Fixes
- Update the javadoc of AmbientModeSupport class to provide sample snippets to better demonstrate the general use of this class.
Version 1.2.0-alpha04
December 16, 2020
androidx.wear:wear:1.2.0-alpha04
is released. Version 1.2.0-alpha04 contains these commits.
API Changes
- Added support for indicating that an Activity can be “auto-resumed” when the device leaves ambient mode in the AmbientModeSupport class. This functionality was previously available in the deprecated WearableActivity class from WearableSupportLibrary. (I336ab)
- OngoingActivity
- Category can now be set when creating an OngoingActivity, e.g.
OngoingActivitiy.Builder.getCategory(String)
- OngoingActivityData now has a timestamp of when the OngoingActivity was built -
OngoingActivityData.getTimestamp()
- (I91cb4)
- Category can now be set when creating an OngoingActivity, e.g.
- Added support for setting margins on children of WearArcLayout by changing the layout params to extend MarginLayoutParams, i.e. WearArcLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams. (I2cd88)
- Change WearCurvedTextView's anchor type default to
WearArcLayout.ANCHOR_CENTER
(wasWearArcLayout.ANCHOR_START
). This simplifies the contract between the arc layout and the curved text as the curved text by default draws itself x-centered at the top, and the parent arc layout can rotate it to where it needs to be. (I105ff)
Version 1.2.0-alpha03
December 2, 2020
androidx.wear:wear:1.2.0-alpha03
is released. Version 1.2.0-alpha03 contains these commits.
New Features
A new layout container DismissibleFrameLayout, which handles back-button-dismiss and/or swipe-to-dismiss, intended for use within an activity. At least one listener must be added to act on a dismissal action. A listener will typically remove a containing view or a fragment from the current activity. setSwipeDismissible(boolean) & setBackButtonDismissible(boolean) are provided for direct control over the features. This new layout is meant to replace the existing SwipeDismissFrameLayout.
Curved widgets now handle touch events. Normal widgets inside an WearArcLayout will receive all touch events, mapped to their coordinate space. WearCurvedTextView (inside an WearArcLayout or not) can set onClick and onLongClick handlers.
Ongoing activities classes are now VersionedParcelables instead of using custom serialization/deserialization. The static icon and touch intent are now required.
API Changes
- The attribute "sweepDegrees" for WearCurvedTextView is separated into minSweepDegrees and maxSweepDegrees to give a more flexible layout of this widget.
Version 1.2.0-alpha02
November 11, 2020
androidx.wear:wear:1.2.0-alpha02
is released. Version 1.2.0-alpha02 contains these commits.
This release adds a new “Ongoing Activities API” for the first time. This API can be used by developers to signal that a long running activity, such as a fitness exercise or a media playback session is on-going. It allows developers to provide periodic status updates such as “distance and time run” or “current track playing” for display on the watch face or in the app launcher. This functionality is targeted at future devices with the on-going activity functionality enabled.
API Changes
- New API for Ongoing Activities, this is a no-op on "unsupported devices.". (I69a31)
Version 1.2.0-alpha01
October 28, 2020
androidx.wear:wear:1.2.0-alpha01
is released. Version 1.2.0-alpha01 contains these commits.
New Features
- Added WearCurvedTextView component for easily writing curved text following the curvature of the largest circle that can be inscribed in the view. An usage example:
<androidx.wear.widget.WearCurvedTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="example curved text"
app:anchorAngleDegrees="180"
app:anchorPosition="center"
app:clockwise="false"
style="@android:style/TextAppearance.Large"
/>
- Added WearArcLayout container for laying out its child elements one by one on an arc in either the clockwise or counterclockwise direction. Its children can be both standard android widget or "curved" widgets which implement its ArcLayoutWidget interface. An usage example:
<androidx.wear.widget.WearArcLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:anchorPosition="center">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_launcher"
/>
<androidx.wear.widget.WearCurvedTextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Curved Text"
style="@android:style/TextAppearance.Small"
android:padding="2dp"
/>
</androidx.wear.widget.WearArcLayout>
(I536da)
Wear-Input 1.2
Version 1.2.0-alpha02
September 29, 2021
androidx.wear:wear-input:1.2.0-alpha02
and androidx.wear:wear-input-testing:1.2.0-alpha02
are released. Version 1.2.0-alpha02 contains these commits.
API Changes
- Renamed
disallowEmoji
tosetEmojisAllowed
inWearableRemoteInputExtender
to use to set whether the option to draw emojis will be shown. (I28393)
Version 1.2.0-alpha01
September 15, 2021
androidx.wear:wear-input:1.2.0-alpha01
and androidx.wear:wear-input-testing:1.2.0-alpha01
are released. Version 1.2.0-alpha01 contains these commits.
API Changes
- Exposed all button location constants from
WearableButtons
. (Ibb12c) - Added
WearableRemoteInputExtender
class that can be used for adding Wear-specific extras to the android.app.RemoteInput. (I01903)
Wear-Input 1.1.0
Version 1.1.0
August 18, 2021
androidx.wear:wear-input:1.1.0
and androidx.wear:wear-input-testing:1.1.0
are released. Version 1.1.0 contains these commits.
Important changes since 1.0.0
- Added
RemoteInputIntentHelper
.- This class can be used to build a RemoteInput Intent. This can then be used to request input from your users in a customisable activity.
Version 1.1.0-rc01
August 4, 2021
androidx.wear:wear-input:1.1.0-rc01
and androidx.wear:wear-input-testing:1.1.0-rc01
are released. Version 1.1.0-rc01 contains these commits.
No API Changes since androidx.wear:wear-input:1.1.0-beta01
and androidx.wear:wear-input-testing:1.1.0-beta01
Version 1.1.0-beta01
July 21, 2021
androidx.wear:wear-input:1.1.0-beta01
and androidx.wear:wear-input-testing:1.1.0-beta01
are released with no changes since 1.1.0-alpha03
. Version 1.1.0-beta01 contains these commits.
Version 1.1.0-alpha03
June 30, 2021
androidx.wear:wear-input:1.1.0-alpha03
and androidx.wear:wear-input-testing:1.1.0-alpha03
are released. Version 1.1.0-alpha03 contains these commits.
Bug Fixes
- Fixed bug which caused RemoteInput intents, which had
RemoteInput
s added to them viaRemoteInputHelper.putRemoteInputsExtra
, to be rejected.
Version 1.1.0-alpha02
May 18, 2021
androidx.wear:wear-input:1.1.0-alpha02
and androidx.wear:wear-input-testing:1.1.0-alpha02
are released. Version 1.1.0-alpha02 contains these commits.
API Changes
RemoteInputIntentHelper
's methods that are used for getting or putting extras that represent title, cancel, confirm, and in progress labels are now usingCharSequence
instead ofString
for these labels. (I0e71f)
Version 1.1.0-alpha01
January 27, 2021
androidx.wear:wear-input:1.1.0-alpha01
and androidx.wear:wear-input-testing:1.1.0-alpha01
are released. Version 1.1.0-alpha01 contains these commits.
API Changes
- Migrate RemoteInputIntent class from Wearable Support Library to AndroidX. The migrated class is renamed as RemoteInputIntentHelper which provides helper functions for supporting remote inputs through starting an intent. (I47cee)
Wear-Input 1.0.0
Version 1.0.0
December 2, 2020
androidx.wear:wear-input:1.0.0
and androidx.wear:wear-input-testing:1.0.0
are released. Version 1.0.0 contains these commits.
This release is identical to 1.0.0-rc01
.
Major features of 1.0.0
Migration of WearableButtons functionality from Wearable Support Library to Jetpack.
Added
androidx.wear.input.test.TestWearableButtonsProvider
which implementsandroidx.wear.input.WearableButtonsProvider
to aid testing applications developed withandroidx.wear:wear-input
library.
Version 1.0.0-rc01
November 11, 2020
androidx.wear:wear-input:1.0.0-rc01
and androidx.wear:wear-input-testing:1.0.0-rc01
are released. Version 1.0.0-rc01 contains these commits.
This release is identical to 1.0.0-beta01
.
Version 1.0.0-beta01
October 28, 2020
androidx.wear:wear-input:1.0.0-beta01
and androidx.wear:wear-input-testing:1.0.0-beta01
are released with no changes since 1.1.0-alpha01
. Version 1.0.0-beta01 contains these commits.
Wear-Input-Testing Version 1.0.0-alpha01
October 14, 2020
androidx.wear:wear-input-testing:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
API Changes
- Added
androidx.wear.input.test.TestWearableButtonsProvider
which implementsandroidx.wear.input.WearableButtonsProvider
to aid testing applications developed withandroidx.wear:wear-input
library. (I0ed0c)
Wear-Input Version 1.0.0-alpha01
September 2, 2020
androidx.wear:wear-input:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
New Features
Migration of WearableButtons functionality from Wearable Support Library to Jetpack. Additional testing support will be provided in androidx.wear:wear-input-testing
library in the next Jetpack release.
Version 1.1.0
Version 1.1.0
October 14, 2020
androidx.wear:wear:1.1.0
is released. Version 1.1.0 contains these commits.
Major changes since 1.0.0
- Added a
layout_
prefix to boxedEdges attribute (nowlayout_BoxedEdges
) forBoxInsetLayout
in order to comply with android naming convention. This will remove the linter error in Android Studio for these attributes. (I4272f) - Added optional
EXTRA_ANIMATION_DURATION_MILLIS
toConfirmationActivity
to allow for the duration that the confirmation dialog is displayed. (adb83ce, b/143356547) - Updated
WearableActionDrawView
to delay action drawer inflation until the drawer is opened for the first time. (I01026, b/163870541)
Version 1.1.0-rc03
September 2, 2020
androidx.wear:wear:1.1.0-rc03
is released. Version 1.1.0-rc03 contains these commits.
Bug Fixes
- Fixed issue with Action Drawer not showing content when it is opened. (I01026, b/163870541)
Version 1.1.0-rc02
June 24, 2020
androidx.wear:wear:1.1.0-rc02
is released. Version 1.1.0-rc02 contains these commits.
Bug Fixes
- Added a
layout_
prefix to boxedEdges attribute (nowlayout_boxedEdges
) forBoxInsetLayout
in order to comply with android naming convention. This will remove the linter error in Android Studio for these attributes.
Version 1.1.0-rc01
May 14, 2020
androidx.wear:wear:1.1.0-rc01
is released with no changes since .1.0-beta01
. Version 1.1.0-rc01 contains these commits.
Version 1.1.0-beta01
April 29, 2020
androidx.wear:wear:1.1.0-beta01
is released with no changes since androidx.wear:wear:1.1.0-alpha01
. Version 1.3.0-beta01 contains these commits.
Version 1.1.0-alpha01
April 15, 2020
androidx.wear:wear:1.1.0-alpha01
is released. Version 1.1.0-alpha01 contains these commits.
API Changes
- Added optional
EXTRA_ANIMATION_DURATION_MILLIS
toConfirmationActivity
to allow for the duration that the confirmation dialog is displayed. (adb83ce, 134523c, b/143356547)
Bug Fixes
- Updated
WearableActionDrawView
to delay action drawer inflation until the drawer is opened for the first time. (5cd32f7)