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

Wear OS 5 开发者预览版基于 Android 14(API 级别 34),这是一个较新的 Android 版本, 版本与 Wear OS 4 所依赖的版本(Android 13 或 API 33 级)。因此,当您准备要在 Wear OS 5 开发者预览版上使用 Wear OS 应用时, 您需要处理会影响所有 Android 应用的系统行为变更 14,以及针对以 Android 14 为目标平台的应用的变更

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

以下行为变更会影响 Wear OS 应用这些变更会影响在 Wear OS 5 上运行的所有应用,无论这些应用是 目标 SDK 版本。

隐私信息中心

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

隐私信息中心可让用户集中查看每个应用的数据使用情况, 包括以下详细信息:

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

通过访问这些信息,用户可以就 哪些应用仍有权访问其个人数据。为了维护用户 信任、以负责任的方式使用数据,并且在收集和使用用户数据时保持透明 数据。

新手表仅显示使用表盘格式的表盘

在发布时搭载 Wear OS 5 开发者预览版的新手表上,表盘必须使用 表盘格式。因此,我们建议您改为使用 表盘格式

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

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

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

从 Wear OS 5 开发者预览版开始,系统会将始终开启的应用移至 背景。 用户可以在系统设置中配置超时。

如果始终开启的应用显示正在进行的用户任务的相关信息(例如 音乐播放或健身课程——您可能希望保留持续性活动 可见。为此,请使用 Ongoing Activity API 发布 与始终开启的活动相关联的持续性通知。

为了 以便系统识别持续性活动、持续性通知的轻触操作 intent 必须指向始终开启的 activity,如以下代码所示 代码段:

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

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

如果您的应用会在用户锻炼期间记录锻炼,您必须 请在相应前台服务中指定 health 前台服务类型, 调用 ExerciseClient。此外,如果您的应用可以监控位置信息 信息,您还需要指定 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 来获取系统界面 以不同的方式响应手势请求。例如,系统界面可能会显示 额外的界面提示(如水平栏)来确认用户的意图。

非线性字体缩放

从 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 变更