Skip to content

Most visited

Recently visited

navigation

独立应用

在 Android Wear 2.0 中,应用可以脱离手机独立运行。用户可以在手表上完成更多任务,无需访问 Android 或 iOS 手机。

规划您的手机应用和手表应用

以 Wear 2.0 为目标的手表 APK 不应嵌入手机 APK 中。如需了解设置应用以通过 Play 商店进行分发的详细信息,请参阅打包和分发 Wear 应用

一般情况下,独立应用和 Wear 2.0 的最低目标 API 级别为 25。仅当您为 Wear 1.0 和 2.0 使用相同 APK(因而具有嵌入式 Wear 1.0 APK)时,最低 SDK 级别才可以为 23。

如果您构建了一个独立 Wear 2.0 APK 且继续拥有一个 Wear 1.0 APK,请同时执行以下两项操作:

注意:如果您发布已移除嵌入式 Wear APK 的现有正式版手机 APK 的更新,则在安装您的独立 Wear APK 之前更新手机 APK 的正式版用户将丢失他们的现有 Wear 应用及其数据。如果您发布现有正式版手机 APK 的更新,请继续将您的手表 APK 嵌入该手机 APK 中。

独立应用需要运行时权限

若需了解有关网络请求和高带宽网络访问的信息,请参阅网络访问和同步

将应用标识为独立应用

Wear 2.0 需要手表应用的 Android manifest 文件中的 meta-data 元素作为 <application> 元素的子元素。meta-data 元素的名称为 com.google.android.wearable.standalone,且值必须为 truefalse。此元素可指明您的手表应用是否为独立应用,以及运行时是否需要手机端 Android 应用。如果此元素的设置为 true,则可在与 iPhone 配对的手表的 Play 商店中获取您的应用,只要您的活动 APK 在所有渠道中(例如,在 Beta 测试版渠道中)都将此元素设置为 true。如果目前向用户提供的所有 APK(Alpha、Beta 测试版或正式版)并不都具有上述设置,则当用户在与 iPhone 配对的手表上搜索时,您的应用将不可用。

手表应用不一定被视为独立应用。可以将手表应用归入以下类别之一:

如果手表应用为完全独立或半独立应用,则将新的 meta-data 元素的值设置为 true

<application>
...
  <meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />
...
</application>

由于独立应用(即独立应用或半独立应用)可由 iPhone 用户或缺少 Play 商店的 Android 手机用户进行安装,因此,无需手机应用即可使用手表应用。

如果手表应用依赖于手机应用,则将上面的 meta-data 元素的值设置为 false。将此元素设置为 false 表示手表应用应仅安装在与具有 Play 商店的手机配对的手表上。

:即使此值为 false,也可以在安装手机应用前安装手表应用。因此,如果手表应用检测到配套手机缺少必要的手机应用,则手表应用应提示用户安装此手机应用。

共享代码和数据存储

Wear 应用和手机应用可以共享代码。或者,也可以将特定于某个机型的代码置于单独模块中。

例如,用于网络连接的常用代码可位于一个共享库中。

您可以使用标准 Android storage API 在本地存储数据。例如,您可以使用 SharedPreferences API、SQLite 或内部存储空间(就像您使用手机一样)。

在另一台设备上检测您的应用

您的手表应用可检测对应的手机应用是否可用,反之亦然。

您的手机应用或手表应用可使用 CapabilityApi 公布应用在已配对的设备上是否存在。它可以静态或动态地执行此操作。当应用位于用户的 Wear 网络(例如,在手机、配对的手表或云中)中的节点上时,CapabilityApi 启用另一个应用以检测该应用是否已安装。如需了解详细信息,请参阅公布功能

如果其中一个应用无法检测到另一个应用,您可以让用户打开其远程设备上的 Play 商店详情。该解决方法适用于需要其配套应用存在才能正常运行的手表应用。为此,必须先检查远程设备上是否有 Play 商店。

请注意,并非所有手机都支持 Play 商店(如 iPhone 等)。

此部分介绍针对以下情形的最佳做法:

请查看显示此功能的示例。如需了解下文所述的类的详细信息,请参阅 Wear API 参考。另外,该参考还提供有关 PhoneDeviceType 类的信息,该类包含一个 getPhoneDeviceType() 函数,允许您的 Wear 应用检查配套手机是Android或者iOS设备。

指定用于检测应用的功能名称

对于与每个设备类型(手表或手机)对应的应用,在 res/values/wear.xml 文件中为功能名称指定一个唯一的字符串。

例如,在 mobile 模块中,wear.xml 文件可包括以下内容:

<resources>
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_phone_app</item>
    </string-array>
</resources>

在 wear 模块中,wear.xml 文件将包含一个不同的功能名称值,如以下所示:

<resources>
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_wear_app</item>
    </string-array>
</resources>

如需了解详细信息,请参阅公布功能

从手表进行应用检测并打开网址

您的手表应用可检测用户的配套手机是否具有您的手机应用:

  1. 使用 CapabilityApi 检查您的手机应用是否已安装在配对的手机上。如需了解详细信息,请参阅示例
  2. 如果您的手机应用未安装在手机上,请使用 PhoneDeviceType.getPhoneDeviceType() 函数检查手机类型。
  3. 如果返回 PhoneDeviceType.DEVICE_TYPE_ANDROID,则表示手机是一台Android 手机。在 Wear 设备上调用 RemoteIntent.startRemoteActivity() 以打开手机上的应用商店。针对您的手机应用使用市场 URI(其可能不同于您的手机 URI)。例如,使用诸如以下市场 URI:market://details?id=com.example.android.wearable.wear.finddevices
  4. 如果返回 PhoneDeviceType.DEVICE_TYPE_IOS,则表示手机可能是一台 iOS 手机(没有可用的 Play 商店)。通过在 Wear 设备上调用 RemoteIntent.startRemoteActivity() 在 iPhone 上打开应用商店。您可以指定您的应用的 iTunes 网址,例如,https://itunes.apple.com/us/app/yourappname。在 iPhone 上,您无法通过 Android Wear 以编程方式确定您的手机应用是否已安装。最佳做法是为用户提供一个机制(例如,按钮)以手动触发应用商店。

请注意,通过使用上述 RemoteIntent API,您可以指定从手表打开手机上的任何网址,且不需要手机应用。

检测已配对手机的类型

以下代码段使用 getPhoneDeviceType() 函数检查已配对的手机的类型':

int phoneDeviceType =
PhoneDeviceType.getPhoneDeviceType(context);

getPhoneDeviceType() 函数返回的值为下列值之一:

返回值 说明
DEVICE_TYPE_ANDROID 已配对手机是Android设备。
DEVICE_TYPE_IOS 已配对手机是iOS设备。
DEVICE_TYPE_ERROR_UNKNOWN 在检查已配对手机类型时发生错误;稍后应再次检查。

从 Android 手机启动应用检测

您的 Android 手机可以检测用户的 Wear 设备是否具有您的手表应用:

  1. 使用 NodeApi,查找已连接至用户手机的所有手表。如需了解详细信息,请参阅示例
  2. 使用 CapabilityApi,检测用户的哪块手表已安装您的应用。
  3. 如果您的应用未安装到用户的所有手表上(将步骤 1 的结果与步骤 2 的结果进行比较),则通过 RemoteIntent.startRemoteActivity() 函数允许用户从手机打开其余 Wear 设备上的 Play 商店。具体而言,针对 Wear 应用使用市场 URI(其可能不同于您的手机应用的 URI)。例如,使用诸如以下市场 URI:market://details?id=com.example.android.wearable.wear.finddevices

与 iPhone 配对的手表的位置数据

对于与 iPhone 配对的手表,开发者应使用 Fused Location Provider (FLP) 获取手表上的位置数据。请参阅在 Android Wear 上检测位置

如果配套手机可用,FLP 将使用配套手机获取位置数据。

仅获取必要的数据

一般情况下,从互联网获取数据时,您应仅获取必要的数据。否则,可能会引发不必要的延迟、内存使用和电池使用。

通过蓝牙 LE 连接手表时,您的应用可能会访问每秒仅 4 千字节的带宽,具体取决于手表。因此,建议您执行以下步骤:

对于需要高带宽网络的情况,请参阅高带宽网络访问

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)