为中国创建 Wear OS 应用

在为中国创建 Wear OS 应用程序时,您需要考虑到没有预装 Google Play 服务的手机。 此页面包含开发人员可能需要为中国市场采用的常见更改。

使用正确的 Google Play 服务版本

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

注意: 尽管 Google Play 服务包含适用于 Wear OS 应用程序的 API,但面向中国的 Wear OS 应用程序应继续使用与 GoogleApiClient 相关的 API;请参阅 访问可穿戴 API.

融合位置提供程序 API

如果您使用融合位置提供程序 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 支持库。

有关更多信息,请参阅 GitHub 上的 Wear OS OAuth 示例

桥接通知

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

位置和地图坐标兼容性

使用 FusedLocationProvider (FLP) 在中国检测用户的地理位置,就像您在世界其他地方做的那样。这可以确保您的应用考虑最佳信息,无论手表硬件和手表配对的手机平台如何。使用 FLP 还会在 Wear OS 平台中添加电池优化功能。

在将 FusedLocationProvider 与第三方地图 SDK 集成时,请考虑提供商之间的坐标兼容性。 FusedLocationProvider 根据 WGS84 标准报告位置。确保根据需要转换坐标系。

Google Fit 支持

Google Fit 的 累计步数计数器、活动分钟数和心率积分 在中国受支持,最多支持七天的历史记录。您可以无需提供用户凭据即可访问此信息。

语音操作支持

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

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

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

类别 示例 意图规格
叫车 打车去三里屯 操作

com.google.android.gms.actions.RESERVE_TAXI_RESERVATION

额外

to: 识别的目的地

额外内容是可选的。

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

android.intent.action.SET_ALARM

额外内容

android.provider.AlarmClock.EXTRA_HOUR: 表示闹钟小时的整数

android.provider.AlarmClock.EXTRA_MINUTES: 表示闹钟分钟的整数

这些额外内容是可选的。可以提供这些额外内容中的一个、两个或都不提供。

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

android.intent.action.SET_TIMER

额外内容

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

启动秒表 开始计时 操作

com.google.android.wearable.action.STOPWATCH

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

vnd.google.fitness.TRACK

MIME 类型

vnd.google.fitness.activity/biking

额外内容

actionStatus: 启动时值为 ActiveActionStatus,停止时值为 CompletedActionStatus 的字符串

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

vnd.google.fitness.TRACK

MIME 类型

vnd.google.fitness.activity/running

额外内容

actionStatus: 启动时值为 ActiveActionStatus,停止时值为 CompletedActionStatus 的字符串

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

vnd.google.fitness.TRACK

MIME 类型

vnd.google.fitness.activity/other

额外内容

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 通用意图 在适用情况下触发某些行为。

模拟器支持

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

要在模拟器的中国版本上测试您的应用,请执行以下步骤

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

此版本的 Wear OS 模拟器预装了多个应用

  • 环境模式
  • 联系人
  • Google 手写输入
  • Google Play 服务
  • 适用于 Wear OS 的健康服务
  • LE 设备的热词识别
  • 拼音
  • Play 商店(适用于中国设备)
  • 怀表
  • TalkBack
  • 表盘(模拟和数字版本)
  • Wear Core Services

启动应用特定的蓝牙和 Wi-Fi 通道

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

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

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

权限审核模式

在中国,Wear OS for China 设备在权限审核模式下运行,这对如何使用 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. 使用 addApiIfAvailable() 方法 GoogleApiClient.Builder 连接到所需的 API。在 onConnected() 回调触发后,使用 hasConnectedApi() 方法确保正确连接了每个请求的 API。

在中国分发应用

为了有效地触达 Wear OS for China 的用户,您可以通过第三方 Wear OS 应用商店进行分发,例如: