创建面向中国市场的 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 平台支持的语音意图列表
类别 | 示例 | 意图规范 |
叫车 | 打车去三里屯 | 操作
额外信息
额外信息是可选的。 |
设置闹钟 | 设置一个明早七点的闹钟 | 操作
额外信息
这些额外信息是可选的。您可以提供其中一个、两个或都不提供。 |
设置计时器 | 设置一个三分钟的倒计时 | 操作
额外信息
|
启动秒表 | 开始计时 | 操作
|
开始或停止骑自行车 | 开始骑车 | 操作
MIME 类型
额外信息
|
开始或停止跑步 | 开始跑步 | 操作
MIME 类型
额外信息
|
开始或停止锻炼 | 开始锻炼 | 操作
MIME 类型
额外信息
|
显示心率 | 查看心率 | 操作
MIME 类型
|
显示步数 | 查看步数 | 操作
MIME 类型
|
导航 | 导航去三里屯 | 操作
数据 geo:latitude,longitude?q=融科资讯中心 |
语音助手还可以使用现有的Android 通用意图来触发某些行为(如果适用)。
模拟器支持
您可以使用中国版本的 Wear OS 模拟器镜像来测试您的应用。Android Studio 3.0 及更高版本支持此功能。
要在中国版本的模拟器上测试您的应用,请按照以下步骤操作:
- 安装 Android 模拟器。
- 从 SDK 管理器下载适用于中国的 Wear OS 镜像。使用 Wear OS 3.5(API 级别 30)的版本。
- 创建 AVD 配置文件时,选择适用于中国的 Wear OS 镜像。
- 运行适用于中国的 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 的可用性:
- 使用单独的
GoogleApiClient
实例来连接其他 API。此接口包含回调函数,用于向您的应用发出连接成功或失败的警报。如果连接失败,则ConnectionResult
会显示API_UNAVAILABLE
。要了解如何处理连接失败,请参阅访问 Google API。 - 使用
addApiIfAvailable()
方法GoogleApiClient.Builder
连接所需的 API。onConnected()
回调函数触发后,使用hasConnectedApi()
方法确保每个请求的 API 都已正确连接。
在中国分发应用
为了有效覆盖中国 Wear OS 用户,您可以通过以下第三方 Wear OS 应用商店进行分发:
- 三星设备的Galaxy Store
- 小米设备的小米商店
- 所有其他设备的Mobvoi