为中国打造 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 规范 |
叫车 | 打车去三里屯 | 操作
Extra
Extra 是可选的。 |
设置闹钟 | 设置一个明早七点的闹钟 | 操作
Extra
这些 extra 是可选的。您可以提供其中一个、全部或都不提供。 |
设置计时器 | 设置一个三分钟的倒计时 | 操作
Extra
|
启动秒表 | 开始计时 | 操作
|
开始或停止骑行 | 开始骑车 | 操作
MIME 类型
Extra
|
开始或停止跑步 | 开始跑步 | 操作
MIME 类型
Extra
|
开始或停止锻炼 | 开始锻炼 | 操作
MIME 类型
Extra
|
查看心率 | 查看心率 | 操作
MIME 类型
|
查看步数 | 查看步数 | 操作
MIME 类型
|
导航 | 导航去三里屯 | 操作
数据 geo:latitude,longitude?q=融科资讯中心 |
语音助手还可以使用现有的Android 通用 intent,在适用情况下触发某些行为。
模拟器支持
您可以使用中国版 Wear OS 模拟器映像来测试您的应用。Android Studio 3.0 及更高版本支持此功能。
如需在中国版模拟器上测试您的应用,请按以下步骤操作
- 安装 Android 模拟器。
- 从 SDK 管理器下载适用于中国的 Wear OS 映像。使用 Wear OS 3.5(API 级别 30)版本。
- 创建 AVD 配置文件时,选择适用于中国的 Wear OS 映像。
- 运行适用于中国的 Wear OS 模拟器以进行开发。


图 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 的可用性:
- 使用单独的
GoogleApiClient
实例来连接其他 API。此接口包含回调,用于向您的应用发出连接成功或失败的提醒。如果连接失败,ConnectionResult
会显示API_UNAVAILABLE
。要了解如何处理连接失败,请参阅访问 Google API。 - 使用
GoogleApiClient.Builder
的addApiIfAvailable()
方法连接到所需的 API。在onConnected()
回调触发后,使用hasConnectedApi()
方法确保每个请求的 API 都已正确连接。
在中国分发应用
为了有效地触达中国 Wear OS 用户,您可以通过以下第三方 Wear OS 应用商店进行分发
- 适用于三星设备的 Galaxy Store
- 适用于小米设备的 小米应用商店
- 适用于所有其他设备的 出门问问