测试应用如何处理行为变更

Wear OS 5 开发者预览版基于 Android 14(API 级别 34),该版本比 Wear OS 4 所依赖的版本(Android 13 或 API 级别 33)更高。因此,如果您准备在 Wear OS 5 开发者预览版中使用 Wear OS 应用,则需要处理影响 Android 14 中所有应用的系统行为变更,以及以 Android 14 为目标平台的应用发生的变更

Wear OS 5 变更会影响所有应用

以下行为变更会影响特定于 Wear OS 的用例和库。无论目标 SDK 版本如何,这些变更都会影响在 Wear OS 5 上运行的所有应用。

隐私信息中心

Wear OS 5 开发者预览版增加了对隐私信息中心的支持,该信息中心最初在搭载 Android 12 的移动设备上推出。

隐私信息中心为用户提供了每个应用的数据使用情况的集中视图,其中包括以下详细信息:

  • 被访问的数据类型,例如位置信息和麦克风。
  • 访问这些数据类型的时间距离现在多久。

通过访问这些信息,用户可以更明智地决定哪些应用仍有权访问他们的个人数据。为了维持用户信任,请以负责任的方式使用数据,并且在收集和使用用户数据时保持透明。

大多数复杂功能数据源都需要使用表盘格式

在即将推出的 Wear OS 版本(包括 Wear OS 5 开发者预览版)中,表盘需要使用表盘格式来支持包含用户数据的复杂功能。我们建议您将表盘更新为使用表盘格式。详细了解复杂功能的这些变更

暂时禁用变更以进行测试

此功能默认处于启用状态。如需停用与此变更对应的功能标志以进行测试,请使用以下命令:

adb shell device_config put wear_services \
  com.google.wear.services.infra.flags.restrict_complications_flag false && \
  adb reboot

Wear OS 5 变更会影响以 Android 14 为目标平台的应用

只有当您将目标 SDK 版本更新到 Android 14(Wear OS 5 开发者预览版所依赖的版本)时,以下变更才会影响您的应用。

始终开启的应用可以移至后台

从 Wear OS 5 开发者预览版开始,当始终开启的应用在氛围模式下显示一段时间后,系统会将其移至后台。用户可以在系统设置中配置超时。

如果始终开启的应用会显示正在进行的用户任务(例如音乐播放或锻炼时段)的相关信息,您可能需要让持续性活动保持可见状态,直到任务结束。为此,请使用 Ongoing Activity API 发布与您的始终开启的活动相关联的持续性通知。

为使系统能够识别持续性活动,持续性通知的轻触 intent 必须指向始终开启的活动,如以下代码段所示:

// Create a pending intent that point to your always-on activity
val touchIntent =
    PendingIntent.getActivity(
        context,
        0,
        Intent(context, MyAlwaysOnActivity::class.java),
        PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
    )

val notificationBuilder =
    NotificationCompat.Builder(this, CHANNEL_ID)
    // ...
    .setOngoing(true)

val ongoingActivity =
    OngoingActivity.Builder(
        applicationContext, NOTIFICATION_ID, notificationBuilder
    )
    // ...
    .setTouchIntent(touchIntent)
    .build()

ongoingActivity.apply(applicationContext)

notificationManager.notify(
    NOTIFICATION_ID,
    notificationBuilder.build()
)

暂时禁用变更以进行测试

此功能默认处于启用状态。如需停用与此变更对应的功能标志以进行测试,请使用以下命令:

adb shell device_config put wear_frameworks \
  com.google.android.clockwork.systemui.flags.ambiactive_components_expirable \
  false && adb reboot

锻炼记录应用必须声明前台服务类型

如果您的应用将锻炼记录为用户锻炼会话的一部分,您必须在调用 ExerciseClient 的前台服务中指定 health 前台服务类型。此外,如果您的应用可以在锻炼时段监控位置信息,您还需要指定 location 前台服务类型:

<manifest ...>
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <application ...>
      <!-- If your app can also monitor location information, use
           android:foregroundServiceType="health|location" instead. -->
      <service
          android:name=".MyExerciseSessionRecorder"
          android:foregroundServiceType="health">
      </service>
    </application>
</manifest>

一些摘下手表的设备保持解锁状态更长

在搭载 Wear OS 5 开发者预览版的受支持设备上,系统会检测用户是否将设备佩戴在手腕上。如果用户关闭手腕检测功能,然后将设备从手腕上取下,则设备保持解锁状态的时间会比以往更长。

如果您的应用需要更高安全级别(例如,在显示潜在的敏感或隐私数据时),请首先检查是否已启用手腕检测:

val wristDetectionEnabled =
        isWristDetectionAutoLockingEnabled(applicationContext)

如果此方法的返回值为 false,请在显示特定于用户的内容之前提示用户在应用中登录。

可拖动的内容可能会与系统手势激活点重叠

从 Wear OS 5 开发者预览版开始,系统会将动作事件手势与系统界面中使用的手势导航分开处理。

如果应用界面包含与系统手势区域重叠的大型可拖动空间,您可能需要为这些视图添加系统手势排除矩形。为此,请调用 setSystemGestureExclusionRects(),以指示系统界面忽略指定区域中的导航手势。这与您在移动应用中处理存在冲突的应用手势以提供无边框界面体验的方式类似。

您可以使用 setSystemGestureExclusionRects() API 让系统界面以不同方式响应手势请求。例如,系统界面可能会显示其他界面提示(如水平栏),以确认用户的 intent。

非线性字体缩放

从 Wear OS 5 开发者预览版开始,系统支持更顺畅的字体缩放,尤其是在用户选择较大字号的情况下,在基于视图的界面组件中。

对隐式 intent 和待处理 intent 的限制

如果您在应用中使用功能块,请检查您的 intent 是否受到隐式 intent 和待处理 intent 的限制的影响。

某些通知仍无法关闭

在搭载 Android 14(API 级别 34)或更高版本的设备上使用手持版应用时,用户可以关闭在以前的版本中不可关闭的通知

不过,在 Wear OS 5 开发者预览版中,这些通知仍不可关闭。

Android 14 中的其他变更

Android 14 中的以下变更最有可能影响您的 Wear OS 应用。

影响所有应用的 Android 14 变更

影响以 API 级别 34 为目标平台的应用的 Android 14 变更