打造中国版 Wear OS 应用时,您需要考虑未预安装 Google Play 服务的手机。本页介绍了开发者可能需要针对中国市场进行哪些常见的变更。
使用正确的 Google Play 服务版本
Google Play 服务 10.2.0 版为 Fused Location Provider API 和 Data Layer API 提供全球支持。如果您使用这些 API 来确保在中国支持更多类型的 Wear OS 设备,则必须使用此版本的 Google Play 服务。在其他情况下,此依赖项是可选的。
注意:虽然 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") }
Data Layer API
如果您的应用使用 Data Layer 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 的授权代码授权流程。您也可以使用在穿戴式设备上进行身份验证中所述的其他方法。不建议使用穿戴式设备支持库。
如需了解详情,请参阅 GitHub 上的 Wear OS OAuth 示例。
桥接通知
中国不支持桥接通知。仅当 Wear 设备使用蓝牙连接到手机时,才会将手机通知桥接到 Wear OS。
位置和地图坐标兼容性
使用 FusedLocationProvider
(FLP) 检测用户在中国的位置,检测方式与在世界其他地方的检测方式一样。这样可确保您的应用获取最实用的信息,而不考虑手表硬件以及与手表配对的手机平台。使用 FLP 还会增加 Wear OS 平台中内置的电池优化功能。
将 FusedLocationProvider
与第三方地图 SDK 集成时,请考虑提供程序之间的坐标兼容性。FusedLocationProvider
按照 WGS84 标准报告位置信息。请务必视情况转换坐标系。
Google 健身支持
中国支持 Google 健身的累计计步器、活动时间和心肺强化分数,相关历史记录最多可保留七天。您可以在不提供用户凭据的情况下查看此历史记录。
语音操作支持
Wear OS 平台提供了一些基于用户操作(如“显示心率”或“设置闹钟”)的语音 intent。这可让用户说出他们想要执行的操作,然后让系统确定要启动的最佳 activity。
当用户说出语音操作时,您的应用可以过滤为了启动 activity 而触发的 intent。如需在后台启动服务,可显示一个 activity 作为视觉提示,并在此 activity 中启动该服务。请务必调用
finish()
来消除视觉提示。
下面列出了 Wear OS 平台支持的语音 intent:
类别 | 示例 | intent 规格 |
约车 | 打车去三里屯 | 操作
Extra
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 模拟器以进行开发。
此版本的 Wear OS 模拟器附带多个预安装应用:
- 氛围模式
- 通讯录
- Google 手写输入
- Google Play 服务
- 适用于 Wear OS 的健康服务
- 通过启动指令识别 LE 设备
- 拼音
- 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 的应用首次启动时,系统也会显示一个对话框,要求用户确认此应用的权限。 - 在首次使用应用之前,应用中的组件(如广播接收器、服务和 activity)不会响应相应的事件。
因此,我们建议您使用 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
- 适用于小米设备的 Xiaomi Store
- 适用于所有其他设备的 Mobvoi