Wear

打造适用于 Wear OS by Google 谷歌智能手表的应用。

下表列出了 androidx.wear 组中的所有工件。

工件 当前稳定版 下一候选版 Beta 版 Alpha 版
wear 1.2.0 - - 1.3.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 - - -
wear-phone-interactions 1.0.0 - - 1.1.0-alpha01
wear-remote-interactions 1.0.0 - - -
此库的最后更新时间:2021 年 9 月 29 日

声明依赖项

如需添加 Wear 的依赖项,您必须将 Google Maven 代码库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

Groovy

dependencies {
    implementation "androidx.wear:wear:1.2.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.1.0-alpha01"
    // 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.2.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.1.0-alpha01")
    // Use to implement support for interactions between the Wearables and Phones
    implementation("androidx.wear:wear-remote-interactions:1.0.0")
}

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库的改进有自己的见解,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

Wear 版本 1.3

版本 1.3.0-alpha01

2021 年 9 月 29 日

发布了 androidx.wear:wear:1.3.0-alpha01版本 1.3.0-alpha01 中包含这些提交内容

bug 修复

  • ConfirmationOverlay 现在将图标上移来适应较长的消息,而不会使消息进入设备屏幕边框(或屏幕外)。(I54bff)

Wear Ongoing 和 Interactions 版本 1.1.0

Wear-Phone-Interactions 版本 1.1.0-alpha01

2021 年 9 月 15 日

发布了 androidx.wear:wear-phone-interactions:1.1.0-alpha01版本 1.1.0-alpha01 中包含这些提交内容

API 变更

  • 向 OAuthRequest 添加了属性 redirectUrl。(I98840Ie684d

Wear Ongoing 和 Interactions 版本 1.0.0

Wear-Phone-Interactions Wear-Remote-Interactions 版本 1.0.0

2021 年 9 月 15 日

发布了 androidx.wear:wear-phone-interactions:1.0.0androidx.wear:wear-remote-interactions:1.0.0版本 1.0.0 中包含这些提交内容

1.0.0 的主要功能

Phone Interaction 库包含用于实现从穿戴式设备到手机的交互的 API。它包含以下各项:

  • PhoneDeviceType,提供了辅助方法,用于确定当前手表配对的手机类型,并仅在穿戴式设备上使用。
  • BridgingManagerBridgingManagerServiceBridgingConfig API,用于在运行时启用/停用通知,还可以为免于进入桥接模式的通知按需设置标记。
  • RemoteAuthClient,不仅支持在穿戴式设备上进行远程身份验证,还支持添加 OAuth PKCE 扩展。此外,还提供了用于通信的其他处理程序和辅助类。

Remote Interaction 库包含用于在穿戴式设备和手机之间进行交互的 API。它包含以下各项:

  • WatchFaceConfigIntentHelper,提供了辅助函数,用于在手机配套的表盘配置 Activity 中指定 ID 和组件名称。
  • RemoteActivityHelper 类,可用于打开其他设备中的 intent(即从手表到手机)。

Wear-Phone-Interactions Wear-Remote-Interactions 版本 1.0.0-rc01

2021 年 9 月 1 日

发布了 androidx.wear:wear-phone-interactions:1.0.0-rc01androidx.wear:wear-remote-interactions:1.0.0-rc01版本 1.0.0-rc01 中包含这些提交内容

bug 修复

  • 修复了一个 bug,以在使用 RemoteActivityHelper 时阻止 Google Play 服务中引发的错误传播到调用方 (I60d60)
  • 修复了如下 bug:在没有已连接节点或者未找到所请求的 nodeId 的情况下 RemoteActivityHelper 永远无法完成其 Future (I60d60)

Wear-Ongoing 版本 1.0.0

2021 年 9 月 1 日

发布了 androidx.wear:wear-ongoing:1.0.0版本 1.0.0 中包含这些提交内容。

1.0.0 的主要功能

  • Wear Ongoing Activities API 是一个面向开发者(包括第三方开发者)的 API,可用于将其活动标记为“持续性活动”并提供所需信息。
  • 持续性活动是指可能在手表后台运行的活动(如锻炼、通话和媒体)。在 Wear 3 上,系统会通过表盘上的专用叠加图标和应用启动器中的不同呈现方式,让声明为进行中的活动更加显眼。
  • 如需了解详情,请参阅 Wear 持续性活动指南

Wear-Phone-Interactions Wear-Remote-Interactions 版本 1.0.0-beta01

2021 年 8 月 18 日

发布了 androidx.wear:wear-phone-interactions:1.0.0-beta01androidx.wear:wear-remote-interactions:1.0.0-beta01版本 1.0.0-beta01 中包含这些提交内容

API 变更

  • RemoteIntentHelper 已重命名为 RemoteActivityHelper。函数 RemoteIntentHelper#getRemoteIntentExtraIntentRemoteIntentHelper#getRemoteIntentNodeId 已分别重命名为 RemoteActivityHelper#getTargetIntentRemoteActivityHelper#getTargetNodeId。(Id2042)

Wear-Ongoing 版本 1.0.0-rc01

2021 年 8 月 18 日

发布了 androidx.wear:wear-ongoing:1.0.0-rc01,该版本与 1.0.0-beta01 相比没有变化。版本 1.0.0-rc01 中包含这些提交内容

Wear-Ongoing 版本 1.0.0-beta01

2021 年 8 月 4 日

发布了 androidx.wear:wear-ongoing:1.0.0-beta01版本 1.0.0-beta01 中包含这些提交内容

API 变更

  • 现在,OngoingActivity.Builder 的部分 setter 接受 null 参数,以便为 setter 和 getter 提供对称性和一致性 (I17ee5)

Wear-Phone-Interactions 版本 1.0.0-alpha07

2021 年 8 月 4 日

发布了 androidx.wear:wear-phone-interactions:1.0.0-alpha07版本 1.0.0-alpha07 中包含这些提交内容

API 变更

  • WearTypeHelper.isChinaDevice 已重命名为 WearTypeHelper.isChinaBuild。(I47302)
  • 我们更新了 RemoteAuthClient 库,以根据设备类型(RoW/中国)自动选择 redirect_uri。(I38866)
  • 修复了导致将 BridgingConfig 与 Bundle 相互转换时因 ClassCastException 而失败的 bug。添加了针对 BridgingManagerService 类的单元测试。(I68ecb)

Wear-Remote-Interactions 版本 1.0.0-alpha06

2021 年 8 月 4 日

发布了 androidx.wear:wear-remote-interactions:1.0.0-alpha06版本 1.0.0-alpha06 中包含这些提交内容

Wear-Phone-Interactions 版本 1.0.0-alpha06

2021 年 7 月 21 日

发布了 androidx.wear:wear-phone-interactions:1.0.0-alpha06版本 1.0.0-alpha06 中包含这些提交内容

API 变更

  • BridgingManagerSeviceBinder 类现在是 Service 的子类,已重命名为 BridgingManagerSevice。(I9fca2)
  • RemoteAuthClient.Callback.onAuthorizationError 方法已更改为包含 OAuthRequest 参数。现在,需要回调的方法也需要一个执行器来运行回调。(I35e11)

bug 修复

  • 我们记录了更多的参数,并尽可能使用属性,从而使得身份验证 API 更加清晰。(I12287)

Wear-Phone-Interactions 版本 1.0.0-alpha05

2021 年 6 月 30 日

发布了 androidx.wear:wear-phone-interactions:1.0.0-alpha05版本 1.0.0-alpha05 中包含这些提交内容。

bug 修复

  • 记录了应在 BridgingConfig.Builder 的构造函数中传递的参数。

Wear-Ongoing 版本 1.0.0-alpha06

2021 年 6 月 2 日

发布了 androidx.wear:wear-ongoing:1.0.0-alpha06版本 1.0.0-alpha06 中包含这些提交内容

API 变更

  • 为持续性活动添加了“标题”字段。(I7a405)

bug 修复

  • SerializationHelper.copy() 现在会保护性复制相关信息 (I8b276)
  • 完善了 setCategory 文档 (Iff01f)

Wear-Ongoing 版本 1.0.0-alpha05

2021 年 5 月 18 日

发布了 androidx.wear:wear-ongoing:1.0.0-alpha05版本 1.0.0-alpha05 中包含这些提交内容。

API 变更

  • OngoingActivity 现在可借助 getter 检索通过 Builder 直接设置的所有值(或从关联的 Notification 中获取的默认值)。(Id8ac8)

    • 现在,使用新类 Status 创建 OngoingActivity 的状态
    • OngoingActivityDataOngoingActivityStatus 不再是公共 API 的一部分。
  • TextStatusPartTimerStatusPart 不再是公共 API 的一部分。(I57fb6)

    • 如需使用静态文本创建 Part,请使用 Status.TextPart
    • 如需创建带有秒表(正计时)的 Part,请使用 Status.Stopwatch
    • 如需创建带有计时器(倒计时)的 Part,请使用 Status.Timer

Wear-Ongoing 版本 1.0.0-alpha04

2021 年 5 月 5 日

发布了 androidx.wear:wear-ongoing:1.0.0-alpha04版本 1.0.0-alpha04 中包含这些提交内容

API 变更

  • 在 OngoingActivity 上,fromExistingOngoingActivity 方法现在称为 recoverOngoingActivity。
  • OngoingActivity 现在有一整套 getter,而同样的内容以前仅在 OngoingActivityData 上提供。(I0ee4d)

Wear-Remote-Interactions 版本 1.0.0-alpha05

2021 年 7 月 21 日

发布了 androidx.wear:wear-remote-interactions:1.0.0-alpha05版本 1.0.0-alpha05 中包含这些提交内容。

API 变更

  • 我们添加了 RemoteIntentHelper 类(以前是穿戴式设备支持库中的 RemoteIntent),可用于打开其他设备中的 intent(即从手表到手机)。(I1d7e0)

  • PlayStoreAvailability 类已从 AndroidX 库中移除。如需检测 Play 商店是否可在已连接的手机上使用,请使用 androidx.phone.interactions.PhoneTypeHelper.getPhoneDeviceType 方法确定已连接的手机是否是 Android 手机。然后,使用 androidx.wear.utils.WearTypeHelper.isChinaDevice 方法确定已连接的手机是否为中国设备。如果手机是 Android 手机,且不是中国设备,则可以使用 Play 商店。(Ie7dec)

Wear-Phone-Interactions 版本 1.0.0-alpha04

2021 年 4 月 7 日

发布了 androidx.wear:wear-phone-interactions:1.0.0-alpha04版本 1.0.0-alpha04 中包含这些提交内容

API 变更

  • 更新了 ErrorCode 常量,使新库与穿戴式设备支持库中的实现向后兼容。

bug 修复

  • 修复了启动 OAuth 会话时新 OAuth API 引起的异常。

Wear-Remote-Interactions 版本 1.0.0-alpha03

2021 年 4 月 7 日

发布了 androidx.wear:wear-remote-interactions:1.0.0-alpha03版本 1.0.0-alpha03 中包含这些提交内容

API 变更

  • PlayStoreAvailability 更改为包含具有静态方法的伴生对象的类。使用方法保持不变。

bug 修复

  • 修复了 WatchFaceConfigIntentHelper 的摘要文档,以便正确显示含有实际 HTML 字符的示例代码。

Wear-Ongoing Wear-Phone-Interactions 版本 1.0.0-alpha03

2021 年 3 月 10 日

发布了 androidx.wear:wear-ongoing:1.0.0-alpha03androidx.wear:wear-phone-interactions:1.0.0-alpha03版本 1.0.0-alpha03 中包含这些提交内容

新功能

  • 将 OAuthClient 从穿戴式设备支持库迁移到 AndroidX。迁移后的这个类已重命名为 RemoteAuthClient,它不但支持在穿戴式设备上进行远程身份验证,还支持添加 OAuth PKCE 扩展。此外,还提供了用于通信的其他处理程序和辅助类。
  • 现在,使用新的 ConcurrentActivity.Builder 构造函数,可将正在进行的活动与具有标记的 Notification 关联起来。

API 变更

  • 添加了对 Ongoing Activities 库中的通知标记的支持 (I653b4)
  • 将 OAuthClient 从 Wear 支持库迁移到 AndroidX 中,并添加了对 OAuth PKCE 扩展的支持 (I3eaa)

Wear-Remote-Interactions 版本 1.0.0-alpha02

2021 年 3 月 10 日

发布了 androidx.wear:wear-remote-interactions:1.0.0-alpha02版本 1.0.0-alpha02 中包含这些提交内容

新功能

  • 将 PlayStoreAvailability 类从穿戴式设备支持库迁移到 AndroidX 中,该类提供了用于检查手机上是否有 Play 商店的 API。

bug 修复

  • 将 PlayStoreAvailability 类从穿戴式设备支持库迁移到 AndroidX 中。(I69bfe)

版本 1.0.0-alpha02

2021 年 2 月 10 日

发布了 androidx.wear:wear-ongoing:1.0.0-alpha02androidx.wear:wear-phone-interactions:1.0.0-alpha02版本 1.0.0-alpha02 中包含这些提交内容

API 变更

  • 现可支持更复杂的状态。它们由一个(或多个)模板和一系列用于填充模板占位符的 Part 组成。OngoingActivityStatus 现在具有一种静态方法,用于创建仅具有一个部分(Text 或 Timer)的简单状态;以及一个用于创建更复杂的状态的 Builder。 (I1fe81)
  • 将 BridgingManager 和 BridgingConfig 类从 Wear 支持库移至 AndroidX,所提供的 API 可用于在运行时启用/停用通知,还可以为免于进入桥接模式的通知按需设置标记。 (I3a17e)

版本 1.0.0-alpha01

2021 年 1 月 27 日

发布了 androidx.wear:wear-ongoing:1.0.0-alpha01androidx.wear:wear-phone-interactions:1.0.0-alpha01androidx.wear:wear-remote-interactions:1.0.0-alpha01版本 1.0.0-alpha01 中包含这些提交内容

API 变更

  • 将 Ongoing Activities 库迁移到新的子库:wear-ongoing。之前位于 androidx.wear.ongoingactivities 中的类现在位于 androidx.wear.ongoing 软件包中 (I7c029)

  • 创建新的支持库,其中包含的类可支持从穿戴式设备至手机间的交互。该库中最初填充了从穿戴式设备支持库迁移的类。(Id5180)

  • 将 PhoneDeviceType 类从穿戴式设备支持库迁移到 AndroidX。迁移的类已重命名为 PhoneTypeHelper,该类提供辅助方法来确定当前手表配对的手机类型,并仅在穿戴式设备上使用。(Ibd947)

  • 创建新的支持库,其中包含支持在穿戴式设备和手机之间进行交互的类。该库中最初填充了从穿戴式设备支持库迁移的类。(I9deb4)

  • 将 WatchFaceCompanion 类从穿戴式设备支持库迁移到 AndroidX。迁移的类已重命名为 WatchFaceConfigIntentHelper,该类提供辅助函数,用于在手机配套的表盘配置 Activity 中指定 ID 和组件名称;该类还可以在本地使用,以配置穿戴式设备上的表盘。(Ia455f)

Wear Complications 和 Watchface 1.0.0

版本 1.0.0-alpha22

2021 年 9 月 15 日

发布了 androidx.wear:wear-*:1.0.0-alpha22版本 1.0.0-alpha22 中包含这些提交内容

新功能

  • EditorSession 现已订阅生命周期观察器,因此,您不必在 Activity 销毁时明确关闭它。

API 变更

  • EditorSession 和 ListenableEditorSession 现已针对 complicationSlotsState、ComplicationsPreviewData 和 ComplicationsDataSourceInfo 使用 kotlin StateFlow。(I761d9)
  • EditorSession#userStyle 现为 MutableStateFlow<UserStyle> (I32ca9)
  • EditorSession.createOnWatchEditorSession 现在使用生命周期观察器,并在观察到 onDestroy 时自动关闭。此外,createOnWatchEditorSession 现在只需要传入 Activity。ListenableEditorSession 也应用了相同的更改。(Ic6b7f)
  • CustomValueUserStyleSetting 的构造函数已恢复为相应公共 API 的一部分。(I2e69a)
  • UserStyle 现在继承自 Map<UserStyleSetting, UserStyleSetting.Option>,并且如果设置不在架构中或选项与设置不匹配,MutableUserStyleSetting#put 会抛出 IllegalArgumentException。(Iba40f)

版本 1.0.0-alpha21

2021 年 9 月 1 日

发布了 androidx.wear:wear-*:1.0.0-alpha21版本 1.0.0-alpha21 中包含这些提交内容

API 变更

  • 所有表盘、客户端、编辑器和复杂功能公共 API 现在都使用 java.time.Instant(而不是 Long)表示时间,因此最低 API 级别已提高到 26。(I3cd48)
  • 表盘 API 和复杂功能 API 现在使用不可变的 ZonedDateTime,而不是 Calendar。(I25cf8)
  • ComplicationSlots 现在使用 NoDataComplicationData 进行初始化,因此 ComplicationSlot.complicationData 始终具有值,并且 CanvasComplicationDrawable.complicationData 不再可为 null。(I4dfd6) 这会减少(但不会消除)切换表盘时的复杂功能闪烁问题。

版本 1.0.0-alpha20

2021 年 8 月 18 日

发布了 androidx.wear:wear-*:1.0.0-alpha20版本 1.0.0-alpha20 中包含这些提交内容

API 变更

  • 我们向 ComplicationDataSourceInfo 添加了 createFallbackPreviewData,可在 ComplicationDataSourceInfoRetriever.RetrievePreviewComplicationData 返回 null 时使用。(I38c4d)
  • ComplicationDataSourceUpdateRequester 已变为接口,以允许在单元测试中进行模拟。您可以使用 ComplicationDataSourceUpdateRequester.create() 构造具体的 ComplicationDataSourceUpdateRequester。(I7da22)
  • RenderParameters.pressedComplicationSlotIds 已被 RenderParameters.lastComplicationTapDownEvents 取代,后者提供了新的 TapEvent 类,其中包含连续三次点按的 x/y 坐标(以像素为单位)以及时间戳。WatchFace.TapListener.onTap 已替换为 onTapEvent(@TapType tapType: Int, tapEvent: TapEvent)。此外,InteractiveWatchFaceClient.displayPressedAnimation 已被移除。(Id87d2)
  • 为 setImportantForAccessibility 添加了显式线程注解 (I990fa)
  • ComplicationSlotBoundsType 已移至 wear/wear-watchface 中的 androidx-wear-watchface.ComplicationSlotBoundsType。(I09420)
  • 我们添加了对将字符串资源 ID 传递到 UserStyleSetting 和 Options 的支持。现在,我们建议您采用此方法构造这些对象。(I03d5f)
  • 已对 UserStyle 架构的最大传输尺寸施加了限制。此外,架构中的图标大小不得超过 400x400 像素。(I3b65b)
  • 我们添加了 MutableUserStyle 类,以支持对 UserStyle 实例的更改 (I95a40)
  • 我们已将 ListenableWatchFaceMetadataClient.Companion#listenableCreateWatchFaceMetadataClient 重命名为 ListenableWatchFaceMetadataClient.Companion#createListenableWatchFaceMetadataClient。(I64ce2)
  • 我们修改了 EditorState.previewComplicationsData,以便只包含已启用的复杂功能的数据,并且新增了 EditorSession.DEFAULT_PREVIEW_TIME_MILLIS(若传递给 renderWatchFaceToBitmapPreviewScreenshotParams,则会请求通过表盘的默认预览时间进行渲染)。(If7b3c)
  • 我们移除了从公共 API 中获取 CharSequence 的 UserStyleSetting 构造函数。建议改用需要 StringResource ID 的构造函数。(I8537b)
  • CurrentUserStyleRepository.UserStyleChangeListener 现在支持 SAM 转换。(I85989)

版本 1.0.0-alpha19

2021 年 8 月 4 日

发布了 androidx.wear:wear-*:1.0.0-alpha19版本 1.0.0-alpha19 中包含这些提交内容

API 变更

  • 我们添加了 ListenableWatchFaceMetadataClient.listenableCreateWatchFaceMetadataClient,用于为 WatchFaceMetadataClient.createWatchFaceMetadataClient 提供 ListenableFuture 封装容器。(I5fa37)
  • UserStyleOption.getOptionForId 现在接受 UserStyleOption.Id,而非字节数组。(I469be)
  • 提供常量 BooleanOption.TRUEBooleanOption.FALSE 并禁止创建实例 (I46e09)
  • 现已向 wear-watchface-client 中可能会抛出 RemoteException 的方法添加了相应的注解。(Ib8438)
  • 为保持一致,我们已将 EditorSession.createOnWatchEditingSession 重命名为 createOnWatchEditorSession。同样,createHeadlessEditingSession 现在为 createHeadlessEditorSession。其 guava 封装容器也已重命名。(I1526b)
  • EditorSession 现在是一个接口,且 ListenableEditorSession.commitChangesOnClose 现已被正确委派。(I7dc3e)
  • 现在,只要用户样式架构的设置或选项中存在冲突的 ID,我们都会一律予以拒绝 (Ic2715)
  • 我们添加了可接受 UserStyleSetting.Id 的已重载的 UserStyle.get。(I2aa0f)

版本 1.0.0-alpha18

2021 年 7 月 21 日

发布了 androidx.wear:wear-*:1.0.0-alpha18版本 1.0.0-alpha18 中包含这些提交内容

API 变更

  • 我们已将 ComplicationHelperActivity 移至 androidx.wear:wear-watchface 库。(I39e76)
  • 为保持一致性和清晰性,ComplicationProvider 已重命名为 ComplicationDataSource,且名称中含有 Provider 的所有类都已进行类似的重命名。(Iaef0b)
  • CanvasComplication.isHighlighted 已移至 RenderParameters.pressedComplicationSlotIds,这是将 CanvasComplication 设为无状态的一个步骤。为了支持此项更改,CanvasComplication.render 现在还会将 slotId 作为参数,现在我们会将 ComplicationSlot 传递到 GlesTextureComplication 中。(I50e6e)
  • 我们已将 headlessDeviceConfig 添加到 EditorRequest;如果此参数不为 null,则将用于构造无头实例,以支持 EditorSession,而不是针对交互式实例执行操作。这样支持为非当前表盘调用该编辑器。(I0a820)
  • 我们添加了实验性 WatchFaceMetadataClient,可用于高效检索静态表盘元数据(如 UserStyleSchema);还修复了 ComplicationSlots 的相关详情。(I6bfdf)
  • 我们已将 CanvasRenderer.uiThreadInit 重命名为 init (I6fff9)
  • 我们为 EditorRequest 添加了可选的新参数 PreviewScreenshotParams,该参数会指示 EditorSession 在提交时抓取预览屏幕截图。预览图片在 EditorState.previewImage 上公开。(Ic2c16)

bug 修复

  • 开发者不再需要将 ComplicationHelperActivity 添加到自己的清单中。(I6f0c2)

版本 1.0.0-alpha17

2021 年 6 月 30 日

发布了 androidx.wear:wear-*:1.0.0-alpha17版本 1.0.0-alpha17 中包含这些提交内容

新功能

  • GlesRenderer 中,makeUiThreadContextCurrentmakeBackgroundThreadContextCurrent 已替换为都接受 RunnablerunUiThreadGlCommandsrunBackgroundThreadGlCommands。该库可确保在任何给定时间只有一个可运行状态的 GL 命令在执行。

  • 为简化 UiThread 初始化,我们添加了 CanvasRenderer.uiThreadInit,它会在对 render 进行任何调用前在 UiThread 上调用一次。我们还在 CanvasComplication 中添加了 onRendererCreated,以便 RendererCanvasComplication 更轻松地共享状态。

  • 为清楚起见,我们已经将 Complication 重命名为 ComplicationSlot,并将 complicationId 重命名为 complicationSlotIdcomplicationInstanceId,具体取决于使用情况

API 变更

  • 为清楚起见,我们已将 Complication 重命名为 ComplicationSlot,并将 complicationId 重命名为 complicationSlotIdcomplicationInstanceId,具体取决于使用情况。使用 Complication 的类已进行类似的重命名,例如,ComplicationsManager 现已更名为 ComplicationSlotsManager。(I4da44)
  • 在 GlesRenderer 中,makeUiThreadContextCurrentmakeBackgroundThreadContextCurrent 已替换为都接受 RunnablerunUiThreadGlCommandsrunBackgroundThreadGlCommands。仅当您需要在 render runBackgroundThreadGlCommandsonUiThreadGlSurfaceCreated 之外发出 GL 调用时,才需要这些函数。这是必需的,因为可能有多个 GlesRenderer,各自在同一进程中具有自己的上下文,并且可能来自不同的表盘。此外,现在针对共享的当前 GL 上下文进行了访问权限同步。(I04d59)
  • 我们添加了 CanvasRenderer.uiThreadInit,它会在对 render 进行任何调用之前在 UiThread 上调用一次。为清楚起见,我们已在 GlesRenderer 中将 onGlContextCreated 重命名为 onBackgroundThreadGlContextCreated,并将 onGlSurfaceCreated 重命名为 onUiThreadGlSurfaceCreated。(If86d0)
  • 已将 HeadlessWatchFaceClientInteractiveWatchFaceClient getComplicationsSlotState 重命名为 getComplicationSlotsState。在 ComplicationSlot 中:createRoundRectComplicationBuildercreateBackgroundComplicationBuildercreateEdgeComplicationBuilder 已分别重命名为 createRoundRectComplicationSlotBuildercreateBackgroundComplicationSlotBuildercreateEdgeComplicationSlotBuilder。(Ib9adc)
  • 我们将 onRendererCreated 添加到了 CanvasComplication,使 Renderer 和 CanvasComplication 能更轻松地分享状态。(I5e1ac)

版本 1.0.0-alpha16

2021 年 6 月 16 日

发布了 androidx.wear:wear-*:1.0.0-alpha16版本 1.0.0-alpha16 中包含这些提交内容

新功能

  • 我们修复了许多与近期线程模型更改相关的 bug,并解决了表盘编辑器的其他问题。

bug 修复

  • 防止了 onComplicationProviderChooserResult 中出现 NPE (b/189594557)
  • 修复了过时接口和 drawBlack 的问题 (b/189452267)
  • 修复了访问 complicationsManager.watchState 时的争用问题 (b/189457893)
  • 修复了后台线程生命周期 bug (b/189445428)
  • 修复了 R 之前版本的表盘编辑器问题 (b/189126313)
  • 对于编辑器样式更改,不更新直接启动参数 (b/187177307)

版本 1.0.0-alpha15

2021 年 6 月 2 日

发布了 androidx.wear:wear-*:1.0.0-alpha15版本 1.0.0-alpha15 中包含这些提交内容

新功能

现在,大部分的表盘初始化任务是在后台线程中完成的,不过,当所有表盘加载后,渲染等任务是在 UiThread 中完成的。由于加载和渲染之间存在内存屏障,因此大多数的用户表盘无需执行任何特殊操作。使用 GLES 的表盘可能是一个例外,因为其上下文是特定于线程的。我们创建了两个关联的上下文,以便能在后台线程中上传 GL 资源(例如:纹理和着色器),并在 UiThread 中使用这些资源。

我们将表盘的构造拆分为三个函数:createUserStyleSchema、createComplicationsManager 和 createWatchFace。我们假设,在加载资源时,createUserStyleSchema 和 createComplicationsManager 的速度很快,而 createWatchFace 可能需要一些时间。为充分利用这一点,我们引入了 WatchFaceControlClient.getDefaultProviderPoliciesAndType,它将返回复杂功能 ID 与 DefaultComplicationProviderPolicy 和默认 ComplicationType 的映射。这比创建无头实例更快,因为它无需完全初始化表盘便可执行查询。

最后,复杂功能现在使用 CanvasComplicationFactory 进行构造,后者允许延迟构造 CanvasComplication 渲染程序。

API 变更

  • 已将 @TargetApi 替换为 @RequiresApi。(I0184ab/187447093b/187447094
  • 我们引入了 WatchFaceControlClient.getDefaultProviderPoliciesAndType,它会返回复杂功能 ID 与 DefaultComplicationProviderPolicy 和默认 ComplicationType 的映射。在可能的情况下,使用快速路径可免于完全构造表盘。为此,我们不得不使用 createUserStyleSchema 和 createComplicationsManager 这两个新方法来更改 WatchFaceService API,这两个新方法的结果会传递到 createWatchFace 中。此外,Complication 现在使用 CanvasComplicationFactory 进行构造,后者允许延迟构造 CanvasComplication 渲染程序。(Iad6c1)
  • 我们从 SystemProviders 中移除了 MOST_RECENT_APP。(I3df00)
  • ObservableWatchData 现在是一个密封的类。(Ic940d)
  • 现在在界面线程渲染开始之前,会为每项复杂功能在后台线程中调用 CanvasComplicationFactory.create(通常为 I/O 密集型)。由于构造和渲染之间存在内存屏障,因此无需特殊的线程基元。(Ia18f2)
  • 尽管所有的渲染都是在界面线程中完成,表盘的构造现在是在后台线程中完成的,为此,GlesRenderer 支持两个关联的上下文。WatchFaceControlClient.createHeadlessWatchFaceClient 和 WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient 可能会在 WatchFaceService.createWatchFace 完成之前解析。后续的 API 调用会阻塞,直到完成表盘初始化。(Id9f41)
  • EXPANSION_DP 和 STROKE_WIDTH_DP 在 api.txt 中不再可见。(I54801)
  • 我们已设置为在出现错误时让 EditorSession.createOnWatchEditingSession 抛出 TimeoutCancellationException,而不是发送 null 会话。此外,EditorRequest.createFromIntent 和 EditorSession.createOnWatchEditingSession 的返回值现在为 NonNull。(I41eb4)

版本 1.0.0-alpha14

2021 年 5 月 18 日

发布了 androidx.wear:wear-*:1.0.0-alpha14版本 1.0.0-alpha14 中包含这些提交内容

新功能

  • EditorSession.openComplicationProviderChooser 现在返回 ChosenComplicationProvider,后者包含复杂功能 ID ComplicationProviderInfo 和包含提供程序选择器返回的任何额外 extra 的 Bundle。
  • 此外,我们也在循序渐进地将代码迁移到 Kotlin,并且大多数表盘 API 现在都是用 Kotlin 定义的。

API 变更

  • GlesRenderer 属性 eglContexteglDisplay 现在不可为 null。现在,任何 GL 错误均通过 GlesRenderer.GlesException 而不是 RuntimeException 进行报告。(Ib1005)
  • 我们已将 androidx.wear.watchface.complications.rendering.ComplicationDrawable 从 Java 迁移到 Kotlin (Ibc3eb)
  • 我们已将 androidx.wear.watchface.complications.rendering.ComplicationStyle 从 Java 迁移到 Kotlin (I3375e)
  • 我们为 EditorSession 中的每个复杂功能添加了复杂功能提供程序的相关信息。(I37f14)
  • 我们扩展了 EditorSession.openComplicationProviderChooser 的结果,现在包括所选的复杂功能返回的信息。(Iead6d)

Wear Complications 和 Watchface 版本 1.0.0-alpha13

2021 年 5 月 5 日

发布了 androidx.wear:wear-*:1.0.0-alpha13版本 1.0.0-alpha13 中包含这些提交内容

新功能

  • 表盘可以拥有除显示时间和复杂功能之外的其他重要视觉元素。为了针对这些元素提供屏幕阅读器支持,表盘现在可以通过渲染器的 additionalContentDescriptionLabels 属性指定无障碍功能 ContentDescriptionLabels。此外,为了便于控制 ContentDescriptionLabels 的排序,我们还为复杂功能添加了 accessibilityTraversalIndex。这可以通过 ComplicationsUserStyleSetting 进行修改。

  • 为鼓励开发者仔细考虑屏幕阅读器,我们要求必须将 ShortTextComplicationData.BuilderLongTextComplicationData.BuilderRangedValueComplicationData.BuildercontentDescription 字段传递到其构造函数中。如果将 ComplicationText.EMPTY 传递到 contentDescription 中,系统则会根据文本和标题自动生成 contentDescription

  • 现在,如果表盘在初始化期间抛出异常,WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient 会抛出 ServiceStartFailureException。这样,您就可以更轻松地对表盘启动期间出现的问题做出诊断。

API 变更

  • 我们添加了对于在 ComplicationProviderInfo 中使用 null 组件名称的支持,这是支持较低版本的 Wear OS 所必需的。(I744d2)
  • 我们已将 androidx.wear.complications.SystemProviders 从 Java 迁移到 Kotlin。(Ia1f8b)
  • 我们隐藏了 android.support.wearable.complications 中所有来自公共 API 的类,并根据需要在 AndroidX 中创建了对应的封装容器。(I7bd50)
  • 我们已将 TimeDifferenceComplicationText.Builder 中的方法从 setMinimumUnit 重命名为 setMinimalTimeUnit。(I20c64)
  • 我们要求必须在构造函数中传递 ShortTextComplicationData.BuilderLongTextComplicationData.BuilderRangedValueComplicationData.BuildercontentDescription 字段。(I8cb69)
  • 我们已将 ComplicationProviderService.onComplicationUpdate 重命名为 onComplicationRequest,并已将此方法的 ID 和类型参数封装到数据 ComplicationRequest 中。对应的监听器及其方法已分别重命名为 ComplicationRequestListener 和 ComplicationRequestListener.onComplicationData。(Iaf146)
  • 我们从 ComplicationData 中移除了方法 isActiveAt,改为公开字段 validTimeRange。此方法调用可以替换为 validTimeRange.contains。(I65936)
  • 我们更改了 ComplicationProviderService.onComplicationActivated 方法的说明,以便接收 ComplicationType,而不是 int。(Idb5ff)
  • 将 ProviderUpdateRequester 从 Java 迁移到了 Kotlin。(Ibce13)
  • GlesRender.makeContextCurrent 现已公开。表盘代码可能需要在 render 和 onGlContextCreated 之外发出 gl 调用。由于可能同时存在交互式上下文和无头上下文,因此进行此调用很有必要。(I8a43c)
  • 如果在初始化期间抛出表盘,WatchFaceControlClient.getOrCreateInteractiveWatchFaceClient 现在会抛出 ServiceStartFailureException。此外,如果 createWatchFace 花费的时间超过 6 秒,WatchFaceService 现在会抛出异常。(I59b2f)
  • 我们移除了 GlesTextureComplication 的未使用 ID 属性。(I28958)
  • 表盘现在可以通过 Renderer 的 additionalContentDescriptionLabels 属性指定无障碍功能 ContentDescriptionLabels。除了控制 ContentDescriptionLabels 的排序之外,我们还为复杂功能添加了 accessibilityTraversalIndex。这可以通过 ComplicationsUserStyleSetting 进行修改。(Ib7362)
  • 扩充了有关在表盘中处理触摸事件的文档。(Iaf31e)

bug 修复

  • 现在,EditorSession.getComplicationsPreviewData() 会为每个复杂功能返回映射,而非只为非空复杂功能返回映射。系统会为空的复杂功能使用 EmptyComplicationData 实例。(I1ef7e)

Wear Complications 和 Watchface 版本 1.0.0-alpha12

2021 年 4 月 21 日

发布了 androidx.wear:wear-*:1.0.0-alpha12版本 1.0.0-alpha12 中包含这些提交内容

新功能

表盘编辑器需要突出显示表盘的组成部分,以帮助说明正在配置手表的哪个方面。我们扩展了 RenderParameters,以便支持突出显示样式和复杂功能。新增了一个可选 HighlightLayer,旨在采用 α 透明度为表盘顶部加边(屏幕截图 API 可以为您完成此加边,或自行提供 HighlightLayer 以最大限度提高灵活性)。例如,假设您有一个样式可让您配置手表指针的外观,您在其 renderHighlightLayer 中的渲染程序可以围绕指针绘制轮廓。

为了鼓励支持复杂功能提供程序以提供无障碍功能,我们将 PhotoImageComplicationData.Builder、MonochromaticImageComplicationData.Builder 和 SmallImageComplicationData.Builder 的 contentDescription 字段设为必需的构造函数参数。添加了 ComplicationTapFilter 和 Complication.createEdgeComplicationBuilder,以支持边缘复杂功能(围绕屏幕边缘绘制)。边缘复杂功能的渲染和点击测试留给表盘完成。配套编辑器不支持边缘点击测试。

API 变更

  • 向 SystemProviders 中的常量添加了 PROVIDER_ 前缀。(I1e773)
  • 我们要求必须在构造函数中传递 PhotoImageComplicationData.BuilderMonochromaticImageComplicationData.BuilderSmallImageComplicationData.BuildercontentDescription 字段。(I9643a)
  • ProviderInfoRetriever.requestPreviewComplicationData 已重命名为 retrievePreviewComplicationData。(I911ee)
  • 已将 ComplicationProviderService 从 Java 迁移到 Koltin。(I849f2)
  • ComplicationProviderService.onBind 方法现已最终确定 (I39af5)
  • 我们恢复了 CanvasComplication 界面,并将 CanvasComplicaitonDrawableGlesTextureComplicationComplicationHighlightRenderer 移到了 wear-watchface-complications-rendering。(I84670)
  • 重构了 RenderParameters,以支持扩展的突出显示渲染。现在可以请求为样式以及全部或单个复杂功能渲染突出显示。此外,CanvasRenderer 和 GlesRenderer 现在有了新的抽象 renderHighlightLayer 方法,用于渲染编辑器请求的任何突出显示。Layer 已重命名为 WatchFaceLayer。(Ic2444)
  • 添加了 ComplicationTapFilterComplication.createEdgeComplicationBuilder,以支持边缘复杂功能。边缘复杂功能的渲染和点击测试留给表盘完成。编辑器中不支持点击测试。(Ia6604)
  • 对于 DoubleRangeUserStyleSettingLongRangeUserStyleSettingdefaultValuemaximumValueminimumValue 现在是 kotlin 属性。此外,移除了 toBooleanOption、toCoplicationOptions、toListOption 等 UserStyleSetting.Option 函数。(I52899)
  • 向表盘可用的设备属性添加了下巴尺寸。(I76e1e)
  • ComplicationHighlightRenderer 的构造函数现在接受 outlineExpansionoutlineStrokeWidth 参数。(I87009)
  • ComplicationDrawable.getNoDataText 现在是公共 API 的一部分。(I00598)

版本 1.0.0-alpha11

2021 年 4 月 7 日

发布了 androidx.wear:wear-*:1.0.0-alpha11版本 1.0.0-alpha11 中包含这些提交内容

新功能

  • 进一步完善了表盘 API。大多数更改都是简单的重命名,但 InteractiveWatchFaceWcsClientInteractiveWatchFaceSysUiClient 已合并到 InteractiveWatchFaceClient 中。

API 变更

  • ContentDescriptionLabel.text 现在属于 ComplicationText,而非旧版穿戴式设备支持库中的 TimeDependentText。(I80c03)
  • SystemProviders.GOOGLE_PAY 不一定在所有 Android R 设备上都存在,因此已从列表中移除。仍然可以通过 DefaultComplicationProviderPolicy 使用此提供程序 (If01b5)
  • 为保证一致性,我们已将 ComplicationUpdateCallback 重命名为 ComplicationUpdateListener。(I61ec7)
  • UserStyle 传输格式映射已更改为 Map<String, byte[]>。为方便起见,已向公共 API 中添加 UserStyleData 类,并且现在会被 wear-watchface-client 和 wear-watchface-editor 使用。此外,CustomValueUserStyleSetting.CustomValueOption.value 现在是 byte[],而不是 String。(Iaa103)
  • UserStyleSettingUserStyleSetting.Option 现在分别使用 UserStyleSetting.IdUserStyleSetting.Option.Id 来存储其 ID,而非使用字符串。(I63f72)
  • InteractiveWatchFaceClient.SystemState 已重命名为 WatchUiState。(I6a4e0)
  • InteractiveWatchFaceWcsClientInteractiveWatchFaceSysUiClient 已合并,因为难以说明责任划分 (Iff3fa)
  • 为清楚起见,已重命名层枚举值。Layer#TOP_LAYER 现已改为 Layer#COMPLICATIONS_OVERLAYLayer#BASE_LAYER 现已改为 Layer#BASE (Ia144e)
  • UserStyleListener 已重命名为 UserStyleChangeListener (I18524)
  • UserStyleRepository 已重命名为 CurrentUserStyleRepository (I6ea53)
  • InteractiveWatchFaceWcsClient.updateInstance 已重命名为 updateWatchfaceInstance。(I321dc)
  • 已重命名 WatchFace TapType 事件,以与 MotionEvents/Compose 保持一致。(I0dfd0)
  • takeWatchfaceScreenshot 已重命名为 renderWatchFaceToBitmap,takeComplicationScreenshot 已重命名为 renderComplicationToBitmap (Ie0697)
  • 已移除 CanvasComplication 接口,取而代之的是开放类 CanvasComplicationDrawable。(I1f81f)
  • 已从公共 API 中移除 WatcfaceControlServiceFactory。(I1f8d3)
  • 已将 CanvasComplication.setData 重命名为 CanvasComplication.loadData。(If1239)
  • ComplicationsManager.bringAttentionToComplication 已重命名为 displayPressedAnimation。(Ic4297)
  • WatchFaceService.createWatchFace 现在有了 @UiThread 注解。(Ib54c2)
  • 更改了一个 CanvasComplicationDrawable 参数的名称,以修复一个 bug。(I50dac)
  • 我们添加了 HeadlessWatchFaceClient.toBundle()HeadlessWatchFaceClient.createFromBundle,以支持通过 AIDL 发送 HeadlessWatchFaceClient。(I07c35)
  • HeadlessWatchFaceClient 和 InteractiveWatchFaceClient 现在含有 ClientDisconnectListener 和 isConnectionAlive(),使您能够观察连接是否因某种原因(例如表盘主题被终止)而中断。(Ie446d)
  • WatchFaceControlClient#getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClientAsync 现在是挂起函数,已重命名为 getOrCreateInteractiveWatchFaceClient。(Ib745d)
  • EditorState.commitChangeshasCommitChanges() 已重命名为 shouldCommitChanges()。(I06e04)
  • previewComplicationData 已重命名为 previewComplicationsData,表示映射中(通常)有多个复杂功能。(I56c06)
  • 为与 ComplicationsManager.displayPressedAnimation 保持一致,已将 InteractiveWatchFaceWcsClient.bringAttentionToComplication 重命名为 displayPressedAnimation。(Ic9999)
  • 出现的所有表盘实例 ID 都已封装到一个新的 WatchFaceId 类中 (I45fdf)
  • complicationState 属性已重命名为 complicationsState,以标示复数。(Ided07)
  • 移除了各种 wear-watchface-client Binder 转换,这些转换是必要的。(Icc4c0)
  • 为保持一致,EditorServiceClient 已重构为使用监听器,而不是观察器。(Iec3a4)
  • InteractiveWatchFaceSysUiClientWatchFaceControlClient 添加了几个缺失的 @Px 注解。(I3277a)
  • 为保持一致,已将 EditorObserverCallback 重命名为 EditorObserverListener。(Ie572d)
  • EditorState.watchFaceInstanceId 仅适用于 Android R API 级别及更高版本,且今后不可为 null。(Id52bb)
  • EditorSession.launchComplicationProviderChooser 已重命名为 openComplicationProviderChooser。(I9d441)
  • EditorSession.createOnWatchEditingSessionAsync 已重命名为 createOnWatchEditingSession,现在是挂起函数。(Id257b)
  • EditorSession 上添加了几个缺失的 @UiThread 注解。(I6935c)
  • UserStyleSetting.affectsLayers 已重命名为 affectedLayers。(I6e22b)

版本 1.0.0-alpha10

2021 年 3 月 24 日

发布了 androidx.wear:wear-*:1.0.0-alpha10版本 1.0.0-alpha10 中包含这些提交内容

新功能

  • 现在可以在调用 WatchFaceService.createWatchFace 时创建开放式 gl 对象(例如纹理),因为 GlesRenderer 现在需要显式调用 initOpenGLContext(可在 createWatchFace 内完成)。

API 变更

  • IdAndComplicationData 不太好用,已从公共 API 中移除。使用过它的类和接口已进行重构。(I4c928)
  • 已将 ReferenceTime 替换为 CountUpTimeReferenceCountDownTimeReference 这两个看起来更一目了然的函数。(Ib66c6)
  • 添加了一些缺失的 @Px@ColorInt 注解。(I9bbc3)
  • Complication.complicationConfigExtras 现在不可为 null,默认为 Bundle.EMPTY。(Iad04f)
  • GlesRenderer 现在要求您在构建后调用 initOpenGLContext。此函数过去仅在内部使用,但现已在公共 API 上提供,以允许在 createWatchFace 内尽早调用 GL。(I726c2)
  • 移除了应该已不再需要的 Complication.setRenderer。(Ie992f)
  • Complicaiton.setComplicationBounds 已从公共 API 中移除。如果您需要调整某个复杂功能的位置,可以通过 ComplicationsUserStyleSetting 实现。(Ibd9e5)
  • ComplicationsManager.TapCallback.onComplicationSingleTapped 已重命名为 onComplicationTapped。(I3a55c)
  • ComplicationOutlineRenderer.drawComplicationSelectOutline 已重命名为 drawComplicationOutline。(I14b88)

版本 1.0.0-alpha09

2021 年 3 月 10 日

发布了 androidx.wear:wear-complications-*:1.0.0-alpha09androidx.wear:wear-watchface-*:1.0.0-alpha09版本 1.0.0-alpha09 中包含这些提交内容

新功能

  • WCS/SysUI 主机和表盘之间的接口已发生变化。现在,编辑器可以确定样式更改将启用还是停用复杂功能(启用表示为 initiallyEnabled 加上 ComplicationsUserStyleSetting 的任何替换状态)。此外,EditorService.closeEditor 还允许 SysUI 根据需要远程关闭表盘编辑器。
  • InteractiveWatchFaceWcsClient.setUserStyle 的基础上添加了一个更强大的命令 updateInstance,后者可以更改实例 ID、设置样式,还可一次性清除复杂功能。

API 变更

  • 已将 TraceEvent 添加到表盘库中。(I1a141)
  • ComplicationState 现在具有一个新属性 initiallyEnabled,该属性可用于预测切换样式的效果。(I8c905)
  • 我们已将 InteractiveWatchFaceWcsClient.setUserStyle 替换为一个更强大的命令 updateInstance,该命令可以更改实例 ID、设置样式,还可清除复杂功能。(Ife6f6)
  • WatchFaceClient 屏幕截图 API 不再压缩屏幕截图(因为处理速度太慢),而是把后处理工作留给调用方来完成。(Id35af)
  • 现在可以通过 EditorService.closeEditor 远程关闭表盘编辑器。(Ic5aa4)
  • 添加了是否可为 null 性注解 (Ic16ed)

版本 1.0.0-alpha08

2021 年 2 月 24 日

发布了 androidx.wear:wear-*:1.0.0-alpha08版本 1.0.0-alpha08 中包含这些提交内容

新功能

  • 有些表盘围绕一个或多个特定复杂功能进行设计,为支持此特性,我们添加了 Complication.Builder#setFixedComplicationProvider,若将其值设为 true,则可以阻止用户更改该槽中的复杂功能。
  • 表盘库优先采用 Kotlin 并使用协程(例如挂起函数)。对于 Java 用户,我们提供了 ListenableFuture 封装容器,以改进以下库中的互操作性:wear/wear-watchface-guava、wear/wear-watchface-client-guava 和 wear/wear-watchface-editor-guava。

API 变更

  • 我们移除了对点按两次复杂功能即可启动提供程序选择器的支持,该功能在表盘中并不常见,还会使 SysUI 的实现复杂化。(I3ef24)
  • 如果 Binder 意外关闭,ProviderInfoRetriever 方法可能会抛出 ServiceDisconnectedException。(Ib2cc4)
  • 从 Android 11 开始,对于何时可以运行 ProviderChooser 会有一些限制。此外,我们希望使用新的 wear-watchface-editor 构建编辑器,以便从公共 API 中移除 ComplicationHelperActivity。(Ib19c1)
  • 移除了 ComplicationText 静态方法以支持构建器。(Ibe399)
  • 我们针对各种表盘库挂起方法引入了 guava ListenableFuture 封装容器。(I16b2c)
  • 为了使 API 更加清晰,我们为 RenderParameters 添加了一个无需色调的辅助构造函数,以便与 LayerMode.DRAW_OUTLINED 以外的 LayerMode 配合使用。(I497ea)
  • 以前,ListUserStyleSetting 与其他构造函数不同,因为它具有默认参数。现在,所有 StyleSetting 子类构造函数均会优先采用默认值。(I9dbfd)
  • CanvasComplication 已重构为使用隐藏方法,从而更方便实现子类 (I5b321)
  • 我们重构了 EditorResult,以便使用新的 EditorService,并使用 EditorSession.broadcastState() 将更新流式传输到观测程序(通常为 SysUI)。(Ic4370)
  • 有些表盘围绕特定的复杂功能而构建,作为表盘的重要组成部分,其中提供程序是用户不可配置的。为了支持这一点,我们添加了 Complication.Builder#setFixedComplicationProvider。(I4509e)
  • EditorRequest 现在用于指定软件包名称而不是 ComponentName,因为 SysUI 不方便用它来查找编辑器的类名称,而且实际上我们只需要软件包名称。(Ib6814)

版本 1.0.0-alpha07

2021 年 2 月 10 日

发布了 androidx.wear:wear-*:1.0.0-alpha07版本 1.0.0-alpha07 中包含这些提交内容

新功能

  • WatchFaceService.createWatchFace 现在是一个挂起函数,这意味着表盘在等待 IO 时不再需要阻塞界面线程。wear-watchface-editor 和 wear-complications-data 也与之类似

API 变更

  • 移除了 PhotoImage 类并直接使用 Icon。(I8a70b)
  • 公开了 ComplicationData 的 validTimeRange。(I91366)
  • 进一步明确了图片类属性。(I81700)
  • wear-watchface-editor 和 wear-complications-data 已重构为使用挂起函数,而不是协程。Rx java 和未来的 compat 封装容器也会进行如此更改。(If3c5f)
  • 现在,如果 requestPreviewComplicationData 因连接问题或缺少 API 支持而无法返回预览数据,ProviderInfoRetriever 会抛出 PreviewNotAvailableException。(I4964d)
  • WatchFaceControlService::createWatchFaceControlClient 现在是一个挂起的函数,而 getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClient 现在称为 getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClientAsync 并会返回 Deferred<InteractiveWatchFaceWcsClient>。Rx java 和未来的 compat 封装容器也会如此。(I5d461)
  • 已将 CATEGORY_PROVIDER_CONFIG_ACTION 重命名为 CATEGORY_PROVIDER_CONFIG。(I7c068)
  • 请注意,createOnWatchEditingSession 现在是一个挂起的函数,因为有时,表盘主题在编辑器 Activity 启动后不久才能使用。(Ida9aa)
  • WatchFaceService.createWatchFace 现在是一个允许异步初始化的挂起函数,而之前,您必须得阻塞主线程。(If076a)
  • UserStyle 现在具有一个数组运算符,我们已将类型转换帮助程序添加到 UserStyle.Option 中。(I35036)
  • 我们修复了 UserStyle 有线格式会导致部分不稳定的隐藏 API 发生改变的编组 bug。(I8be09)
  • 我们添加了 CustomValueUserStyleSetting,可让您在 UserStyle 中存储特定于应用的单个字符串。默认表盘主题编辑器会忽略此值。(Ic04d2)
  • 对于我们无法升级的 Android WearOS R 及更低版本,InstanceID 未在 Intent extra 中传递。为了解决这一问题,我们现在允许 InstancID 为 null。(Id8b78)
  • EditorRequest 现在包含编辑器 ComponentName,它设置为 WatchFaceEditorContract.createIntent 中的一个组件 (I3cd06)
  • 表盘主题 EditorResult 现在包含预览 ComplicationData,以允许调用方在修改表盘主题后对其进行屏幕截图。(I2c561)

bug 修复

  • 向 UserStyle、UserStyleSetting 和 UserStyleSchema 添加了 toString() 替换项,使得这些类的处理变得更加简单。(I9f5ec)

版本 1.0.0-alpha06

2021 年 1 月 27 日

发布了 androidx.wear:wear-*:1.0.0-alpha06版本 1.0.0-alpha06 中包含这些提交内容

新功能

  • 我们推出了新库 wear/wear-watchface-editor,该库可供表盘开发者(或许还包括原始设备制造商 (OEM))用来构建样式和复杂功能编辑器。SysUI 会向表盘发送一个 Intent,该 Intent 会使用新的 EditorSession 类来获取 WatchFace 详细信息,并通过 Activity.setWatchRequestResult 记录结果。为了支持此功能,我们添加了 ProviderInfoRetriever.requestPreviewComplicationData,该类可使表盘编辑器能够请求预览 ComplicationData。预览 ComplicationData 的好处在于,它与实时数据不同,您不必担心在呈现编辑器时显示权限对话框(请注意,如果用户选择的提供程序带有权限,系统仍会提示他们授予权限)。

API 变更

  • ComplicationProviderInfo 现在包含提供程序的 ComponentName 字段。稍后,我们会向 WearOS 添加对该字段的支持,同时会将该字段设为 null。(Id8fc4)
  • 添加了 ProviderInfoRetriever.requestPreviewComplicationData,该类可使表盘编辑器能够请求预览 ComplicationData。这很实用,因为实时复杂功能可能需要权限,而您现在可以针对未处于活跃状态的复杂功能显示预览数据。(I2e1df)
  • ComplicationManager 现在是 WatchFace 构造函数的可选参数。为此,已对相应参数进行了重新排序。(I66c76)
  • 向复杂功能添加了一个可选的 Bundle。如果设置了该 Bundle,它会合并到发送来启动提供程序选择器 Activity 的 intent 中。(Ifd4ad)
  • 添加了一个新的 wear-watchface-editor 库,用于支持表盘和 SysUi 托管的编辑器。SysUI 将通过发送 intent 来启动这些编辑器。表盘 Activity 服务可以使用新的 EditorSession 类来获取 WatchFace 详细信息,并通过 Activity.setWatchRequestResult 记录结果。(I2110d)
  • LayerMode.DRAW_HIGHLIGHTED 现在称为 LayerMode.DRAW_OUTLINED,而 RenderParameters.highlightComplicationId 现在称为 RenderParameters.selectedComplicationId。RenderParameters.selectedComplicationId 除了绘制轮廓外,还会突出显示指定的复杂功能。(I90a40)
  • 以后,如果 WatchFaceControlClient.getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClient 服务在等待创建表盘主题时终止,可以通过 ServiceStartFailureException 进行解决。(I0f509)
  • EditorSession.complicationPreviewData 现在是 ListenableFuture,因为提取此数据是一个异步过程。(Iead9d)

bug 修复

  • 我们即将从 complicationBounds 以及处于启用状态的 ComplicationOverlay 中移除未使用的字段。(I17b71)

版本 1.0.0-alpha05

2021 年 1 月 13 日

发布了 androidx.wear:wear-*:1.0.0-alpha05版本 1.0.0-alpha05 中包含这些提交内容。

新功能

表盘通常支持许多复杂功能配置,这些配置显示的复杂功能数量不等。为了简化其设置,我们现在通过对构建器调用 setEnabled(false) 来支持最初停用的复杂功能。日后可以通过 ComplicationsUserStyleSetting 启用这些复杂功能。

API 变更

  • ComplicationHelperActivity 现在接受 Collection<ComplicationType>,不再接受整数数组,这样更易于使用。(I1f13d)
  • ProviderInfoRetriever.retrieveProviderInfo 现在会正确返回 ListenableFuture<ProviderInfo[]>。(If2710)
  • 现在,您可以通过对构建器调用 setEnabled(false) 来创建最初停用的复杂功能。(Idaa53)
  • WatchFaceState 现在添加了一个仅适用于无头实例的 isHeadless 属性。(Ifa900)
  • ComplicationDrawable 现在选择性地支持同步加载可绘制对象。这个类由屏幕截图 API 使用。(I34d4a)

版本 1.0.0-alpha04

2020 年 12 月 16 日

发布了 androidx.wear:wear-*:1.0.0-alpha04版本 1.0.0-alpha04 中包含这些提交内容

新功能

  • 现在,Wear 表盘主题库支持按类型设置边界。例如,您可以切换为对 ComplicationType.LONG_TEXT 使用宽边界框,而对其他类型使用较细的边界框。

API 变更

  • 复杂功能现在使用 ComplicationBounds,该类封装了一个 Map<ComplicationType, RectF> 来支持按复杂功能类型定义尺寸。(I1ebe7)
  • 现在,您可以通过 RenderParameters 指定要在屏幕截图中使用的突出显示色调。(Iff42b)
  • 除了边界外,您现在必须使用 ComplicationsUserStyleSetting 修改复杂功能,这是为了确保操作系统保持同步。(I8dc5d)
  • Renderer 现在是一个密封的类。这意味着 CanvasRenderer 和 GlesRenderer 现在是 Renderer 的内部类。(Iab5d4b/173803230
  • CanvasComplicationDrawable.drawHighlight 已重命名为 drawOutline。ObservableWatchData 现在添加了几个缺少的 UiThread 注解。ScreenState 现已从 WatchState 中完全移除。(If1393)
  • 现在,wear-watchface 的最低 API 级别为 25。请注意,支持硬件画布需要 API 级别 26 或更高级别。(Ic9bbd)
  • InteractiveWatchFaceWcsClient 现在有一个 getComplicationIdAt 辅助程序。(I05811)
  • wear-watchface-client 的 API 级别已降至 25,不过屏幕截图 API 需要 API 级别 27。(Id31c2)

bug 修复

  • 现在,我们在 ComplicationState 中提供复杂功能当前 ComplicationData 的 ComplicationType。(I9b390)
  • InteractiveWatchFaceWcs 现在有一个 `bringAttentionToComplication 方法,用于短暂突出显示指定的复杂功能。(I6d31c)
  • InteractiveWatchFaceWcsClient#setUserStyle 现在有一个接受 Map<string, string=""> 的重载,因此,构造 UserStyle 有可能不需要额外的 IPC 往返。(I24eec)</string,>

版本 1.0.0-alpha03

2020 年 12 月 2 日

发布了 androidx.wear:wear-*:1.0.0-alpha03版本 1.0.0-alpha03 中包含这些提交内容

新功能

Complication 类现在有一个 compicationData 属性,可以让表盘观察 ComplicationData 的更改。因此,可以根据复杂功能的类型更改其尺寸。

现在,可以通过分配到 Renderer.interactiveDrawModeUpdateDelayMillis 来支持可变帧速率。因此,对于每秒运行一次简短动画的表盘,可以通过在没有动画时进入休眠状态来显著节省电量。

API 变更

  • BACKGROUND_IMAGE 已连同相关类一起重命名为 PHOTO_IMAGE。这种复杂功能并非专门用于背景,因此更改了名称。(I995c6)
  • DefaultComplicationProviderPolicy 现在已使用 IntDef 进行正确注解。(I3b431)
  • 隐藏的 TimeDependentText 类不再通过 ContentDescriptionLabel 提供,而是添加一个访问函数在指定时间获取文本。(Ica692)
  • ObservableWatchData 的构造函数现在是内部函数。(I30121b/173802666
  • Complication 现在具有可让表盘观察 ComplicationData 更改的 compicationData 属性。Complication 还新加了一个 isActiveAt 调用,可用于判断是否应在提供的日期时间呈现任何内容。(Ic0e2a)
  • SharedMemoryImage 已不在公共 API 中。(I7ee17)
  • WatchFace.overridePreviewReferenceTimeMillis 现在添加了一个 IntRange 注解,并且 getter 和 setter 具有一致的名称。(Ia5f78)
  • 为清楚起见,现在通过 Complication.createRoundRectComplicationBuilderComplication.createBackgroundComplicationBuilder 创建 Complication.Builder (I54063)
  • 添加了 WatchFace.TapListener,此接口可让 WatchFace 观察到复杂功能未使用的点按操作。(Ic2fe1b/172721168
  • WatchFace 现在通过分配到 Renderer.interactiveDrawModeUpdateDelayMillis 来支持可变帧速率。这有助于在没有动画时进入休眠状态,从而延长电池续航时间。(I707c9)
  • WatchFace.Builder 已不再需要,invalidate() 和 interactiveUpdateRateMillis 已移至 Renderer。(I329ea)
  • 为提高 Java 互操作性,针对 WatchState 中的布尔值属性重命名了 getter (I6d2f1)
  • 为保持一致,已将 TapListener 重命名为 TapCallback,将 InvalidateCallback 重命名为 InvalidateListener。(I9414e)
  • 为清楚起见,Wear 2.0 表盘样式选项已移至其自己的类中。WatchFace.Builder setter 现在具有对称的 WatchFace 类 getter。(Iefdfc)
  • 添加了 InteractiveWatchFaceWcsClient 和 WatchFaceControlClient.getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClient,用于获取现有实例,或者在连接壁纸服务并创建引擎后创建实例。(Id666e)
  • WatchFaceControlClient 现在是一个允许测试对其进行模拟的接口。(I875d9)
  • 为了更方便进行测试,HeadlessWatchFaceClient、InteractiveWatchFaceSysUiClientImpl 和 InteractiveWatchFaceWcsClient 现在是接口。(I7cdc3)
  • wear-watchface-complications-rendering 中的方法添加了注解 (I0d65c)

bug 修复

  • 从复制 android.content.res.Configuration#isScreenRound() 的 DeviceConfig 中移除了屏幕形状 (Ifadf4)
  • WatchFaceControlClient.getOrCreateWallpaperServiceBackedInteractiveWatchFaceWcsClient 改为接受 Map<String, String>,不再接受 UserStyle,因为在不知道架构的情况下很难创建 UserStyle,而架构只能在创建客户端后获取。(Iea02a)
  • 修复了 InteractiveWatchFaceWcsClient,以使用 ComplicationState 而非传输格式。(Icb8a4)
  • UserStyleSettings 现在是密封的类,因为表盘编辑器只能理解内置类。(I2d797)

版本 1.0.0-alpha02

2020 年 11 月 11 日

发布了 androidx.wear:wear-*:1.0.0-alpha02版本 1.0.0-alpha02 中包含这些提交内容

API 变更

  • ComplicationDetails 现在称为 ComplicationState 且已正确封装,同时穿戴式设备支持的用法 @ComplicationData.ComplicationType 已迁移至 androidx ComplicationType。(I4dd36)
  • 向 RenderParameters 添加了一个可选的 highlightedComplicationId 参数,以便您请求突出显示屏幕截图中的单个复杂功能。(I66ce9)
  • ComplicationProviderService 使用新样式的复杂功能 API 以实现一致性 (Id5aea)
  • getPreviewReferenceTimeMillis 现在从 DeviceConfig 获取参考时间。(I779fe)
  • 简化了 Renderer API Surface,可改为使用 SurfaceHolder.Callback 观察变更。(I210db)
  • CanvasComplicationRenderer 并非从 Renderer 扩展,为清楚起见,对其进行了重命名。(Ibe880)

bug 修复

  • androidx.wear:wear-watchface-client 的初始版本 (I1e35e)
  • 为清楚起见,更改了 GlesTextureComplication#renderer 的名称 (Ib78f7)
  • 为清楚起见,已将 StyleCategory 重命名为 StyleSetting (I488c7)
  • 添加了 UserStyleSchema 以简化 API (If36f8)

版本 1.0.0-alpha01

2020 年 10 月 28 日

发布了 androidx.wear:wear-complications-*:1.0.0-alpha01androidx.wear:wear-watchface-*:1.0.0-alpha01版本 1.0.0-alpha01 中包含这些提交内容

API 变更

  • 移除了我们不希望在公共 API 中公开的某些内容。(I41669)
  • 创建了 androidx.wear:wear-complications-provider 库。(I77f1f)
  • 新增了 ComplicationsUserStyleCategory 类别,推荐用于配置复杂功能 (I96909)
  • 添加了 wear-complication-data API。(I7c268)
  • 返回布尔值的函数现在采用“is”名称前缀,而非“get”(If36ff)
  • API 的推荐做法是避免使用受保护的数据,因此我们重构了这个类,让其通过构造函数接收参数。(I61644)
  • 为清楚起见,重命名了 setBackgroundComplication。(I96fe3)
  • 为 ComplicationDrawable isHighlighted 及相关数据使用 Kotlin 属性 (I4dcc8)
  • 我们添加了 Complication#invalidate(),用于替代 ComplicationRenderer.InvalidateCallback (I4f4c6)
  • 这些 API 已在 WearableSupport 中弃用,并在此版本中移除。(Ib425c)
  • 重命名了一些 WatchFace 构建器方法,以强调它们 Wear 2.0 遗留产物的性质。(Idb775)
  • wear/wear-watchface 的第一个候选 Beta 版 API (Id3981)
  • 第一个受到跟踪的 API 版本。(Ie9fe6)
  • 正确隐藏 ComplicationDrawable.BorderStyle IntDef 并移至 ComplicationStyle,以实现一致性。(I27f7a)
  • 为 ComplicationStyle 方法添加了缺失的注释 (I838fd)
  • 此库没有公共 API Surface (I88e2b)
  • 所有样式的 Category Option 类现均已正确设置为“final”。(Ib8323)
  • 第一个受到跟踪的 API 版本。(I27c85)

bug 修复

  • 更改了 ComplicationProviderService 以添加明确的 getComplicationPreviewData 方法。(I4905f)
  • 针对 androidx 启用了 MissingGetterMatchingBuilder 的 API lint 检查(I4bbeab/138602561
  • 重命名了 wear-complications-rendering。(Ifea02)
  • 样式类别显示名现为 CharSequence (I28990)
  • 将“Override”替换为“Overlay”,以符合当前主题与样式的命名惯例。(I4fde9)
  • 为清楚起见,重命名了 UserStyle#getOptions。(I695b6)

版本 1.2.0

版本 1.2.0

2021 年 9 月 15 日

发布了 androidx.wear:wear:1.2.0版本 1.2.0 中包含这些提交内容

自 1.1.0 以来的重要变更

  • 添加了 CurvedText 组件,以便沿着视图中可内切的最大圆圈的弧线轻松显示曲线文字。用法示例:

    <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"
    />
    

    Android Wear 中的曲线文字示例

  • 添加了 ArcLayout 容器,用于按顺时针或逆时针方向在圆弧上逐个布置其子元素。其子级可以是标准 Android 微件,也可以是实现其 ArcLayout.Widget 接口的“曲线”微件。(I536da) 用法示例:

    <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>
    

    Android Wear 中的拱形文字示例

  • 新增布局容器 DismissibleFrameLayout,旨在用于 Activity 内,负责处理返回按钮关闭和/或滑动关闭。至少必须添加一个监听器,以对关闭操作执行操作。监听器通常会从当前 Activity 中移除所属视图或 Fragment。提供了 setSwipeDismissible(boolean) 和 setBackButtonDismissible(boolean),用于直接控制这些功能。此新布局旨在替换现有的 SwipeDismissFrameLayout。

  • 在 AmbientModeSupport 类中添加了相关支持,允许在设备退出氛围模式时指示可“自动恢复”Activity。此功能以前由在 WearableSupportLibrary 中已弃用的 WearableActivity 类提供。(I336ab)

  • 从穿戴式设备支持库迁移了 WearableCalendarContract 类。此 API 会提供通过 CalendarContract 获取的数据的子集,但会自动同步到穿戴式设备。(I6f2d7)

  • androidx.wear.utils 中添加了一个新的 API WearTypeHelper,用于确定指定的 Wear 设备是否面向中国。(Ib01a9)

  • androidx.wear.widget.ConfirmationOverlay 中新增了一些无障碍功能,这些功能会在动画说明设置完毕后读出消息。(I524dd)

  • 修复了在未提供消息时导致 ConfirmationActivity 崩溃的 bug。(Ie6055)

  • 修复了水平滚动 RecyclerView 导致 WearableDrawerLayout 扫视所有互动的 bug。(I24c7f)

版本 1.2.0-rc01

2021 年 9 月 1 日

发布了 androidx.wear:wear:1.2.0-rc01,该版本与上个 Beta 版相比没有变化。版本 1.2.0-rc01 中包含这些提交内容

版本 1.2.0-beta01

2021 年 8 月 18 日

发布了 androidx.wear:wear:1.2.0-beta01版本 1.2.0-beta01 中包含这些提交内容

bug 修复

  • 修复了在未提供消息时导致 ConfirmationActivity 崩溃的 bug。(Ie6055)

版本 1.2.0-alpha13

2021 年 8 月 4 日

发布了 androidx.wear:wear:1.2.0-alpha13版本 1.2.0-alpha13 中包含这些提交内容

API 变更

  • WearTypeHelper.isChinaDevice 已重命名为 WearTypeHelper.isChinaBuild。(I47302)

bug 修复

  • 我们在 androidx.wear.widget.ConfirmationOverlay 中新增了一些无障碍功能,这些功能会在动画说明设置完毕后读出消息。(I524dd)

版本 1.2.0-alpha12

2021 年 7 月 21 日

发布了 androidx.wear:wear:1.2.0-alpha12版本 1.2.0-alpha12 中包含这些提交内容

API 变更

  • 我们在 androidx.wear.utils 中添加了一个新的 API WearTypeHelper,用于确定指定的 Wear 设备是否面向中国。(Ib01a9)

版本 1.2.0-alpha11

2021 年 6 月 30 日

发布了 androidx.wear:wear:1.2.0-alpha11版本 1.2.0-alpha11 中包含这些提交内容

bug 修复

  • 修复了水平滚动 RecyclerView 导致 WearableDrawerLayout 扫视所有互动的问题。(I24c7f)

版本 1.2.0-alpha10

2021 年 6 月 2 日

发布了 androidx.wear:wear:1.2.0-alpha10版本 1.2.0-alpha10 中包含这些提交内容

新功能

  • Alpha10 对 CurvedText 和 ArcLayout 进行了改进,能更好地支持无障碍功能,并且还对 DismissibleFrameLayout 中的一些方法名称稍作调整,进行了重命名,以帮助阐明该 API。

API 变更

  • 我们重命名了 DismissibleFrameLayout 中的以下方法 (Ib195e):
    • Callback#onDismissed -> Callback#onDismissedFinished
    • isSwipeDismissible -> isDismissableBySwipe
    • isBackButtonDismissible -> isDismissableByBackButton
  • 我们已将以下方法定为最终方法 (Ib195e):
    • setBackButtonDismissible
    • setSwipeDismissible
    • registerCallback
    • unregisterCallback

bug 修复

  • 在 Talkback 中使用 CurvedTextView 的内容。(I05798)
  • 改进了 ArcLayout 中普通视图的无障碍功能。(I4418d)

版本 1.2.0-alpha09

2021 年 5 月 18 日

发布了 androidx.wear:wear:1.2.0-alpha09版本 1.2.0-alpha09 中包含这些提交内容

API 变更

  • 添加了新函数 CurvedTextView.setTypeface()(类似于 TextView 的相应函数),用于设置文本字体和粗体/斜体样式。(I4653c)
  • 已将 WearArcLayout 重命名为 ArcLayout,将 WearCurvedText 重命名为 CurvedText,并将 WearArcLayout.ArcLayoutWidget 重命名为 ArcLayout.Widget。(I6e5ce)
    • 对于 ArcLayout.Widget,已将 getThicknessPx 重命名为 getThickness
    • ArcLayout.LayoutParams 的垂直对齐常量的命名现在以 VERTICAL_ALIGN_(而不是之前的 VALIGN_)开头。
  • 对于 CurvedTextViewsetMinSweepDegreessetMaxSweepDegrees 方法已替换为 setSweepRangeDegrees (I7a9d9)

版本 1.2.0-alpha08

2021 年 5 月 5 日

发布了 androidx.wear:wear:1.2.0-alpha08版本 1.2.0-alpha08 中包含这些提交内容

API 变更

  • 为提高代码的清晰度,我们在一些角度参数和返回值类型中添加了 @FloatRange 注解。(I430dd)
  • 在接口 WearArcLayout.ArcLayoutWidget 中,insideClickArea 方法现在称为 isPointInsideClickArea。(Ia7307)

版本 1.2.0-alpha07

2021 年 3 月 24 日

发布了 androidx.wear:wear:1.2.0-alpha07版本 1.2.0-alpha07 中包含这些提交内容

bug 修复

  • 修复了因使用高度大于宽度的屏幕尺寸导致 WearArcLayout 内部存在非弯曲子项的错误。现在,这些非弯曲的子项在任何屏幕类型上都可以在圆弧内正确放置。

版本 1.2.0-alpha06

2021 年 1 月 27 日

发布了 androidx.wear:wear:1.2.0-alpha06版本 1.2.0-alpha06 中包含这些提交内容

API 变更

  • 将 Ongoing Activities 库迁移到新的子库:wear-ongoing。之前位于 androidx.wear.ongoingactivities 中的类现在位于 androidx.wear.ongoing 软件包中 (I7c029)
  • 将 WearableCalendarContract 类从穿戴式设备支持库迁移到 AndroidX。此 API 会提供通过 CalendarContract 获取的数据的子集,但会自动同步到穿戴式设备。(I6f2d7)

bug 修复

  • 默认情况下,在可关闭的 FrameLayout 中停用返回按钮关闭功能,因为滑动关闭仍然是在穿戴式设备上返回全屏的主要方式 (Ic24e3)
  • 修复了在 WearArcLayout 中处理子项的可见性时存在的一些问题 (Icf912)

版本 1.2.0-alpha05

2021 年 1 月 13 日

发布了 androidx.wear:wear:1.2.0-alpha05版本 1.2.0-alpha05 中包含这些提交内容

bug 修复

  • 为了更好地演示 AmbientModeSupport 类的一般用途,更新了此类的 javadoc 以提供示例代码段。

版本 1.2.0-alpha04

2020 年 12 月 16 日

发布了 androidx.wear:wear:1.2.0-alpha04版本 1.2.0-alpha04 中包含这些提交内容

API 变更

  • 在 AmbientModeSupport 类中添加了相关支持,允许在设备退出微光模式时指示可“自动恢复”Activity。此功能以前由在 WearableSupportLibrary 中已弃用的 WearableActivity 类提供。(I336ab)
  • OngoingActivity
    • 现在可在创建 OngoingActivity 时设置类别,例如 OngoingActivitiy.Builder.getCategory(String)
    • OngoingActivityData 现在具有表示 OngoingActivity 的构建时间的时间戳 OngoingActivityData.getTimestamp()
    • (I91cb4)
  • 添加了相关支持,允许通过更改布局参数来扩展 MarginLayoutParams(即 WearArcLayout.LayoutParams 可扩展 android.view.ViewGroup.MarginLayoutParams),从而对 WearArcLayout 的子项设置外边距。(I2cd88)
  • 将 WearCurvedTextView 的锚点类型默认值更改为 WearArcLayout.ANCHOR_CENTER(原为 WearArcLayout.ANCHOR_START)。这简化了弧线布局与曲线文本之间的协定,因为在默认情况下,曲线文本绘制时会在顶部 x 轴居中,而父弧线布局可以将其旋转到所需的位置。(I105ff)

版本 1.2.0-alpha03

2020 年 12 月 2 日

发布了 androidx.wear:wear:1.2.0-alpha03版本 1.2.0-alpha03 中包含这些提交内容

新功能

新增布局容器 DismissibleFrameLayout,旨在用于 Activity 内,负责处理返回按钮关闭和/或滑动关闭。至少必须添加一个监听器,以对关闭操作执行操作。监听器通常会从当前 Activity 中移除所属视图或 Fragment。提供了 setSwipeDismissible(boolean) 和 setBackButtonDismissible(boolean),用于直接控制这些功能。此新布局旨在替换现有的 SwipeDismissFrameLayout。

曲线微件现在可以处理触摸事件。WearArcLayout 内的正常微件将接收所有触摸事件,映射到其坐标空间。WearCurvedTextView(无论是否在 WearArcLayout 内)可以设置 onClick 和 onLongClick 处理程序。

Ongoing Activities 类现在是 VersionedParcelable,而不使用自定义的序列化/反序列化。现在需要静态图标和触摸 intent。

API 变更

  • WearCurvedTextView 的属性“sweepDegrees”已分成 minSweepDegrees 和 maxSweepDegrees,为此微件提供更灵活的布局。

版本 1.2.0-alpha02

2020 年 11 月 11 日

发布了 androidx.wear:wear:1.2.0-alpha02版本 1.2.0-alpha02 中包含这些提交内容

此版本首次添加了新的“Ongoing Activities API”。开发者可以使用此 API 指示一项长时间的活动(例如,健身运动或媒体播放)正在持续进行中。借助此 API,开发者可以提供周期性状态更新(例如,“跑步距离和时间”和“当前播放的曲目”),以显示在表盘上或应用启动器中。此功能的适用对象为日后启用“正在进行的活动”功能的设备。

API 变更

  • 新的 Ongoing Activities API,这在“不受支持的设备”上是一项空操作。(I69a31)

版本 1.2.0-alpha01

2020 年 10 月 28 日

发布了 androidx.wear:wear:1.2.0-alpha01版本 1.2.0-alpha01 中包含这些提交内容

新功能

  • 添加了 WearCurvedTextView 组件,以便沿着视图中可内切的最大圆圈的弧线轻松显示曲线文字。用法示例:
<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"
/>

Android Wear 中的曲线文字示例

  • 添加了 WearArcLayout 容器,用于按顺时针或逆时针方向在圆弧上逐个布置其子元素。其子级可以是标准 Android 微件,也可以是实现其 ArcLayoutWidget 接口的“曲线”微件。用法示例:
<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>

Android Wear 中的拱形文字示例

(I536da)

Wear-Input 1.2

版本 1.2.0-alpha02

2021 年 9 月 29 日

发布了 androidx.wear:wear-input:1.2.0-alpha02androidx.wear:wear-input-testing:1.2.0-alpha02版本 1.2.0-alpha02 中包含这些提交内容

API 变更

  • WearableRemoteInputExtender 中的 disallowEmoji 重命名为 setEmojisAllowed,用于设置是否显示绘制表情符号的选项。(I28393)

版本 1.2.0-alpha01

2021 年 9 月 15 日

发布了 androidx.wear:wear-input:1.2.0-alpha01androidx.wear:wear-input-testing:1.2.0-alpha01版本 1.2.0-alpha01 中包含这些提交内容

API 变更

  • 公开了 WearableButtons 中的所有按钮位置常量。(Ibb12c)
  • 添加了 WearableRemoteInputExtender 类,可用于将特定于 Wear 的 extra 添加到 android.app.RemoteInput。(I01903)

Wear-Input 1.1.0

版本 1.1.0

2021 年 8 月 18 日

发布了 androidx.wear:wear-input:1.1.0androidx.wear:wear-input-testing:1.1.0版本 1.1.0 中包含这些提交内容

自 1.0.0 以来的重要变更

  • 添加了 RemoteInputIntentHelper
    • 此类可用于构建 RemoteInput intent。然后,这可用于在可自定义 activity 中请求用户的输入。

版本 1.1.0-rc01

2021 年 8 月 4 日

发布了 androidx.wear:wear-input:1.1.0-rc01androidx.wear:wear-input-testing:1.1.0-rc01版本 1.1.0-rc01 中包含这些提交内容

androidx.wear:wear-input:1.1.0-beta01androidx.wear:wear-input-testing:1.1.0-beta01 以来没有任何 API 更改

版本 1.1.0-beta01

2021 年 7 月 21 日

发布了 androidx.wear:wear-input:1.1.0-beta01androidx.wear:wear-input-testing:1.1.0-beta01,这两个版本与 1.1.0-alpha03 相比没有变化。版本 1.1.0-beta01 中包含这些提交内容

版本 1.1.0-alpha03

2021 年 6 月 30 日

发布了 androidx.wear:wear-input:1.1.0-alpha03androidx.wear:wear-input-testing:1.1.0-alpha03版本 1.1.0-alpha03 中包含这些提交内容

bug 修复

  • 修复了导致 RemoteInput intent 被拒绝的 bug,其中此 intent 通过 RemoteInputHelper.putRemoteInputsExtra 向自己添加 RemoteInput

版本 1.1.0-alpha02

2021 年 5 月 18 日

发布了 androidx.wear:wear-input:1.1.0-alpha02androidx.wear:wear-input-testing:1.1.0-alpha02版本 1.1.0-alpha02 中包含这些提交内容

API 变更

  • 用于获取或放置表示标题、取消、确认和处理中标签的 extra 的 RemoteInputIntentHelper 的方法现在使用 CharSequence(而非 String)对这些标签执行操作。(I0e71f)

版本 1.1.0-alpha01

2021 年 1 月 27 日

发布了 androidx.wear:wear-input:1.1.0-alpha01androidx.wear:wear-input-testing:1.1.0-alpha01版本 1.1.0-alpha01 中包含这些提交内容

API 变更

  • 将 RemoteInputIntent 类从穿戴式设备支持库迁移到 AndroidX。迁移的类已重命名为 RemoteInputIntentHelper,该类提供辅助函数,用于通过启动 intent 来支持遥控器输入。(I47cee)

Wear-Input 1.0.0

版本 1.0.0

2020 年 12 月 2 日

发布了 androidx.wear:wear-input:1.0.0androidx.wear:wear-input-testing:1.0.0版本 1.0.0 中包含这些提交内容

此版本与 1.0.0-rc01 完全相同。

1.0.0 的主要功能

  • WearableButtons 功能从穿戴式设备支持库迁移到 Jetpack。

  • 添加了 androidx.wear.input.test.TestWearableButtonsProvider,它实现了 androidx.wear.input.WearableButtonsProvider,以便协助测试使用 androidx.wear:wear-input 库开发的应用。

版本 1.0.0-rc01

2020 年 11 月 11 日

发布了 androidx.wear:wear-input:1.0.0-rc01androidx.wear:wear-input-testing:1.0.0-rc01版本 1.0.0-rc01 中包含这些提交内容

此版本与 1.0.0-beta01 完全相同。

版本 1.0.0-beta01

2020 年 10 月 28 日

发布了 androidx.wear:wear-input:1.0.0-beta01androidx.wear:wear-input-testing:1.0.0-beta01,这两个版本与 1.1.0-alpha01 相比没有变化。版本 1.0.0-beta01 中包含这些提交内容

Wear-Input-Testing 版本 1.0.0-alpha01

2020 年 10 月 14 日

发布了 androidx.wear:wear-input-testing:1.0.0-alpha01版本 1.0.0-alpha01 中包含这些提交内容

API 变更

  • 添加了 androidx.wear.input.test.TestWearableButtonsProvider,它实现了 androidx.wear.input.WearableButtonsProvider,以便协助测试使用 androidx.wear:wear-input 库开发的应用。(I0ed0c)

Wear-Input 版本 1.0.0-alpha01

2020 年 9 月 2 日

发布了 androidx.wear:wear-input:1.0.0-alpha01版本 1.0.0-alpha01 中包含这些提交内容

新功能

WearableButtons 功能从穿戴式设备支持库迁移到 Jetpack。在下一个 Jetpack 版本中,androidx.wear:wear-input-testing 库将提供更多测试支持。

版本 1.1.0

版本 1.1.0

2020 年 10 月 14 日

发布了 androidx.wear:wear:1.1.0版本 1.1.0 中包含这些提交内容

自 1.0.0 以来的重要变更

  • BoxInsetLayout 的 boxedEdges 属性添加了layout_前缀(现为layout_BoxedEdges)以便遵循 android 命名惯例。这将消除 Android Studio 中与这些属性有关的 linter 错误。(I4272f)
  • ConfirmationActivity 添加了可选的 EXTRA_ANIMATION_DURATION_MILLIS,让您可以控制确认对话框显示的时长。(adb83ceb/143356547
  • 更新了 WearableActionDrawView,让操作抽屉的膨胀时间延迟到抽屉栏首次打开的时侯。(I01026b/163870541

版本 1.1.0-rc03

2020 年 9 月 2 日

发布了 androidx.wear:wear:1.1.0-rc03版本 1.1.0-rc03 中包含这些提交内容。

bug 修复

  • 解决了操作抽屉在打开时不显示内容的问题。(I01026b/163870541

版本 1.1.0-rc02

2020 年 6 月 24 日

发布了 androidx.wear:wear:1.1.0-rc02版本 1.1.0-rc02 中包含这些提交内容

bug 修复

  • BoxInsetLayout 的 boxedEdges 属性添加了layout_前缀(现为layout_boxedEdges)以便遵循 Android 命名惯例。这将消除 Android Studio 中与这些属性有关的 linter 错误。

版本 1.1.0-rc01

2020 年 5 月 14 日

发布了 androidx.wear:wear:1.1.0-rc01,该版本与 .1.0-beta01 相比没有变化。版本 1.1.0-rc01 中包含这些提交内容

版本 1.1.0-beta01

2020 年 4 月 29 日

发布了 androidx.wear:wear:1.1.0-beta01,该版本与 androidx.wear:wear:1.1.0-alpha01 相比没有变化。版本 1.3.0-beta01 中包含这些提交内容

版本 1.1.0-alpha01

2020 年 4 月 15 日

发布了 androidx.wear:wear:1.1.0-alpha01版本 1.1.0-alpha01 中包含这些提交内容

API 变更

  • ConfirmationActivity 添加了可选的 EXTRA_ANIMATION_DURATION_MILLIS,让您可以控制确认对话框显示的时长。(adb83ce134523cb/143356547

bug 修复

  • 更新了 WearableActionDrawView,让操作抽屉的膨胀时间延迟到抽屉栏首次打开的时侯。(5cd32f7)