创建面向中国的 Wear OS 应用

创建面向中国市场的 Wear OS 应用时,需要考虑到未预装 Google Play 服务的手机。此页面包含开发者可能需要为中国市场采用的常见更改。

使用正确的 Google Play 服务版本

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

注意:尽管 Google Play 服务包含 Wear OS 应用的 API,但面向中国的 Wear OS 应用应继续使用与GoogleApiClient相关的 API;请参阅 访问 Wearable 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 Support Library。

更多信息,请参见 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 镜像。使用 Wear OS 3.5(API 级别 30)的版本。
  3. 创建 AVD 配置文件时,选择适用于中国的 Wear OS 镜像。
  4. 运行适用于中国的 Wear OS 模拟器进行开发。
  5. 图 1. 中国版 Wear OS 模拟器的示例。

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

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

启动应用特定的蓝牙和 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. 使用addApiIfAvailable()方法GoogleApiClient.Builder连接所需的 API。 onConnected()回调函数触发后,使用 hasConnectedApi()方法确保每个请求的 API 都已正确连接。

在中国分发应用

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