为中国打造 Wear OS 应用

为中国打造 Wear OS 应用时,您需要考虑未预安装 Google Play 服务的设备。此页面包含开发者为中国市场可能需要做出的一些常见改动。

使用正确版本的 Google Play 服务

Google Play 服务 10.2.0 版为 Fused Location Provider API 数据层 API 提供全球支持。如果您使用这些 API,则必须使用此版本的 Google Play 服务,以确保支持更广泛的中国 Wear OS 设备。在其他情况下,此依赖项是可选的。

注意:虽然 Google Play 服务包含适用于 Wear OS 应用的 API,但中国的 Wear OS 应用应继续使用与 GoogleApiClient 相关的 API;请参阅访问 Wearable API

Fused Location Provider API

如果您使用 Fused Location Provider API,请在 Wear OS 模块的 build.gradle 文件中添加以下依赖项

Groovy

dependencies {
    ...
    implementation 'com.google.android.gms:play-services-location:10.2.0'
}

Kotlin

dependencies {
    ...
    implementation("com.google.android.gms:play-services-location:10.2.0")
}

数据层 API

如果您的应用使用数据层 API,您需要在 Wear OS 模块的 build.gradle 文件中添加以下行。此行要求使用客户端库的 10.2.0 版本。

Groovy

dependencies {
    ...
    implementation 'com.google.android.gms:play-services-wearable:10.2.0'
    ...
}

Kotlin

dependencies {
    ...
    implementation("com.google.android.gms:play-services-wearable:10.2.0")
    ...
}

在移动模块的 build.gradle 文件中添加以下行。将 Google Play 服务依赖项替换为对 10.2.0 版本的引用。

Groovy

dependencies {
    ...
    implementation 'com.google.android.gms:play-services-wearable:10.2.0'
}

Kotlin

dependencies {
    ...
    implementation("com.google.android.gms:play-services-wearable:10.2.0")
}

身份验证

在实现身份验证之前,请检查您的用例,以确定是否确实需要身份验证。例如,对于提供天气预报的应用,很可能无需登录,也就不需要身份验证。

如果您确实需要身份验证,我们建议使用 AndroidX OAuth 库。这需要使用带有 PKCE 的授权码授权流程。您还可以使用可穿戴设备上的身份验证中描述的其他方法之一。不建议使用 Wearable Support Library。

如需了解详情,请参阅 GitHub 上的 Wear OS OAuth 示例

桥接通知

桥接通知在中国不受支持。仅当 Wear OS 设备通过蓝牙连接到手机时,手机通知才会桥接到 Wear OS。

位置和地图坐标兼容性

在中国,请使用 FusedLocationProvider (FLP) 检测用户位置,与世界其他地区相同。这样可以确保您的应用无论手表硬件和手表配对的手机平台如何,都能获取最佳信息。使用 FLP 还会带来 Wear OS 平台内置的电池优化功能。

FusedLocationProvider 与第三方地图 SDK 集成时,请考虑不同提供商之间的坐标兼容性。FusedLocationProvider 会按照 WGS84 标准报告位置。请务必根据需要转换坐标系。

Google Fit 支持

Google Fit 的累计步数计数器、活动分钟数和心肺强化分数在中国受支持,可提供长达 7 天的历史记录。您无需提供用户凭据即可访问此功能。

语音操作支持

Wear OS 平台提供多种基于用户操作的语音 intent,例如“显示心率”或“设置闹钟”。这让用户能够说出他们想做什么,系统会找出要启动的最佳活动。

当用户说出语音操作时,您的应用可以过滤被触发的 intent 来启动活动。要在后台启动服务,请将活动显示为视觉提示,并在活动中启动服务。请务必调用 finish() 以消除视觉提示。

以下是 Wear OS 平台支持的语音 intent 列表

类别 示例 Intent 规范
叫车 打车去三里屯 操作

com.google.android.gms.actions.RESERVE_TAXI_RESERVATION

Extra

to:识别出的目的地

Extra 是可选的。

设置闹钟 设置一个明早七点的闹钟 操作

android.intent.action.SET_ALARM

Extra

android.provider.AlarmClock.EXTRA_HOUR:闹钟的小时数(整数)

android.provider.AlarmClock.EXTRA_MINUTES:闹钟的分钟数(整数)

这些 extra 是可选的。您可以提供其中一个、全部或都不提供。

设置计时器 设置一个三分钟的倒计时 操作

android.intent.action.SET_TIMER

Extra

android.provider.AlarmClock.EXTRA_LENGTH:一个整数,范围从 1 到 86400(24 小时内的秒数),表示计时器的时长

启动秒表 开始计时 操作

com.google.android.wearable.action.STOPWATCH

开始或停止骑行 开始骑车 操作

vnd.google.fitness.TRACK

MIME 类型

vnd.google.fitness.activity/biking

Extra

actionStatus:一个字符串,在启动时值为 ActiveActionStatus,在停止时值为 CompletedActionStatus

开始或停止跑步 开始跑步 操作

vnd.google.fitness.TRACK

MIME 类型

vnd.google.fitness.activity/running

Extra

actionStatus:一个字符串,在启动时值为 ActiveActionStatus,在停止时值为 CompletedActionStatus

开始或停止锻炼 开始锻炼 操作

vnd.google.fitness.TRACK

MIME 类型

vnd.google.fitness.activity/other

Extra

actionStatus:一个字符串,在启动时值为 ActiveActionStatus,在停止时值为 CompletedActionStatus

查看心率 查看心率 操作

vnd.google.fitness.VIEW

MIME 类型

vnd.google.fitness.data_type/com.google.heart_rate.bpm

查看步数 查看步数 操作

vnd.google.fitness.VIEW

MIME 类型

vnd.google.fitness.data_type/com.google.step_count.cumulative

导航 导航去三里屯 操作

android.intent.action.VIEW

数据

geo:latitude,longitude?q=融科资讯中心

语音助手还可以使用现有的Android 通用 intent,在适用情况下触发某些行为。

模拟器支持

您可以使用中国版 Wear OS 模拟器映像来测试您的应用。Android Studio 3.0 及更高版本支持此功能。

如需在中国版模拟器上测试您的应用,请按以下步骤操作

  1. 安装 Android 模拟器。
  2. 从 SDK 管理器下载适用于中国的 Wear OS 映像。使用 Wear OS 3.5(API 级别 30)版本。
  3. 创建 AVD 配置文件时,选择适用于中国的 Wear OS 映像。
  4. 运行适用于中国的 Wear OS 模拟器以进行开发。
  5. 图 1. 中国版 Wear OS 模拟器的示例。

此版本的 Wear OS 模拟器预装了以下几个应用

  • 环境模式
  • 通讯录
  • Google 手写输入
  • Google Play 服务
  • 适用于 Wear OS 的健康服务
  • 低功耗设备的热词识别
  • 拼音
  • Play 商店(适用于中国设备)
  • 袖珍手表
  • TalkBack
  • 表盘(包括模拟和数字版本)
  • Wear 核心服务

启动应用专用蓝牙和 Wi-Fi 频道

Wear OS 会自动路由网络请求。在大多数情况下,应用无需打开应用专用的蓝牙和 Wi-Fi 频道。

如果应用在中国请求应用专用的蓝牙和 Wi-Fi 频道,请求会静默失败。相反,系统会显示一个对话框,请求用户确认。如果用户确认,频道就会打开。这种情况每次都会发生,而不仅仅是首次使用时。BluetoothAdapter.enable()WifiManager.setEnabled(true) 会被调用。

注意:对于以 Android 10 (API 级别 29) 或更高版本为目标的应用,如果要调用 WifiManager.setEnabled(),则它必须是系统应用或设备政策控制器 (DPC)

权限审核模式

在中国,适用于中国的 Wear OS 设备在“权限审核模式”下运行,这会对使用 targetApiLevel 低于 23 的应用施加一些限制。请查看以下限制

  • 即使权限在安装时已授予,当 targetApiLevel 低于 23 的应用首次启动时,也会出现一个对话框,要求用户确认此应用的权限。
  • 应用中的组件,例如广播接收器、服务和活动,在应用首次使用之前不会响应相应的事件。

因此,我们建议您使用 targetApiLevel 23 或更高版本,并采用应用权限最佳实践

使用其他 Google Play 服务 API

如果您的应用使用 Google Play 服务 API(Wearable API 除外),则您的应用需要检查这些 API 在运行时是否可用,并作出适当响应。有两种方法可以检查 Google Play 服务 API 的可用性:

  1. 使用单独的 GoogleApiClient 实例来连接其他 API。此接口包含回调,用于向您的应用发出连接成功失败的提醒。如果连接失败, ConnectionResult 会显示 API_UNAVAILABLE。要了解如何处理连接失败,请参阅访问 Google API
  2. 使用 GoogleApiClient.BuilderaddApiIfAvailable() 方法连接到所需的 API。在 onConnected() 回调触发后,使用 hasConnectedApi() 方法确保每个请求的 API 都已正确连接。

在中国分发应用

为了有效地触达中国 Wear OS 用户,您可以通过以下第三方 Wear OS 应用商店进行分发