The Android Developer Challenge is back! Submit your idea before December 2.

打造中国版 Wear OS 应用

打造中国版 Wear OS 应用时,您需要考虑未预安装 Google Play 服务的手机。本页介绍了国际开发者可能需要针对中国市场进行哪些常见的变更。

使用正确的 Google Play 服务版本

Google Play 服务 10.2.0 版为 Fused Location Provider APIData Layer API 提供全球支持。如果开发者使用这些 API,则必须使用此版本。在其他情况下,此依赖项是可选的。

虽然 Google Play 服务现在包含 Wear 应用的新 API,但中国版 Wear OS 应用应继续使用与 GoogleApiClient 相关的 API;请参阅访问 Wearable API

Fused Location Provider API

如果您使用 Fused Location Provider API,则需要在 Wear 模块的 build.gradle 文件中添加以下依赖项:

    dependencies {
        ...
        compile 'com.google.android.gms:play-services-location:10.2.0'
    }
    

Data Layer API

重要提示:自 Wear 2.0 以来,不再建议使用 Data Layer API。这是因为,应用现在可以直接访问互联网,从而简化了代码开发流程。此外,iOS 配对的 Wear 设备不支持 Data Layer API。

如果您的应用使用 Data Layer API,则需要将以下行添加到 Wear 模块的 build.gradle 文件中。该行要求使用 10.2.0 版的客户端库:

    dependencies {
        ...

        compile 'com.google.android.gms:play-services-wearable:10.2.0'

        ...

    }
    

此外,您还需要将以下行添加到 mobile 模块的 build.gradle 文件中。将 Google Play 服务依赖项替换为对 10.2.0 版本的引用。

    dependencies {
        ...

        compile 'com.google.android.gms:play-services-wearable:10.2.0'

    }
    

身份验证

在实现身份验证之前,请检查您的用例,以查看是否确实需要身份验证。例如,对于提供天气预报的应用,可能不需要登录,因而无需进行身份验证。

如果您确实需要身份验证,我们建议您使用 OAuth 2.0,或使用设备上的输入作为后备措施。或者,您也可以使用数据层传递安全令牌。不过,建议您不要使用数据层,因为它不支持与 iOS 设备配对的 Wear OS 设备。

桥接通知

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

位置和地图坐标兼容性

您应使用 FusedLocationProvider 来检测用户在中国的位置,检测方式与在世界上其他地方的检测方式是一样的。这样可确保您的应用获取最实用的信息,而不考虑手表硬件以及与手表配对的手机平台。此外,Wear OS 平台内置的电池优化功能也会发挥很大的作用。

FusedLocationProvider 与第三方地图 SDK 集成时,您应考虑提供程序之间的坐标兼容性。 FusedLocationProvider 按照 WGS84 标准报告位置信息。请务必视情况转换坐标系。

Google 健身支持

中国支持 Google 健身的累计计步器、活动时间和心肺强化分数,相关历史记录最多可保留七天。您可以在不提供用户凭据的情况下查看此历史记录。

模拟器支持

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

要在中国版模拟器上测试您的应用,请执行以下操作:

  1. 确保您已安装 Android 模拟器 26.1.2 版。
  2. 通过 SDK 管理器下载中国版 Wear OS 映像。
  3. 创建 AVD 配置文件时,选择使用中国版 Wear OS 映像。
  4. 运行中国版 Wear OS 模拟器以进行开发。

启动特定于应用的蓝牙和 WLAN 通道

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

如果应用在中国请求特定于应用的蓝牙和 WLAN 通道,则该请求将静默失败。系统会显示一个弹出式对话框,要求用户进行确认。用户确认后,系统会打开相应通道。每次(也就是说,不仅仅是在首次使用时)调用 BluetoothAdapter.enable()WifiManager.setEnabled(true) 时都会发生这种情况。

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

权限审核模式

在中国,中国版 Wear OS 设备在 Permission Review Mode 下运行,这对如何使用 targetApiLevel 低于 23 的应用施加了一些限制:

  • 即使在安装时授予了相关权限,当 targetApiLevel 低于 23 的应用首次启动时,系统也会显示一个对话框,要求用户确认此应用的权限。
  • 在首次使用应用之前,应用中的所有组件(如广播接收器、服务、Activity 等)都不会响应相应的事件。

因此,我们强烈建议您使用 targetApiLevel 23 或更高级别并采用运行时权限最佳做法

使用其他 Google Play Services API

如果您的应用使用 Google Play Services API 而不是 Wearable API,那么您的应用需要检查这些 API 在运行时是否可用以及是否能够相应地做出响应。检查 Google Play Services API 可用性的方式有以下两种:

  1. 使用独立的 GoogleApiClient 实例来连接到其他 API。此接口包含回调以提醒您的应用连接成功还是失败。如果连接失败,ConnectionResult 将显示 API_UNAVAILABLE。若要了解如何处理连接故障,请参阅访问 Google API
  2. 使用 GoogleApiClient.BuilderaddApiIfAvailable() 方法连接到所需的 API。触发 onConnected() 回调后,使用 hasConnectedApi() 方法确保请求的每个 API 都连接正确。

在中国分发应用

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