65.9K
CodeProject 正在变化。 阅读更多。
Home

Android Wear 应用程序 ABC

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.79/5 (16投票s)

2015 年 9 月 20 日

CPOL

22分钟阅读

viewsIcon

38793

downloadIcon

349

本文介绍了构建和部署 Android Wear 应用程序所需的知识。

引言和背景

在本文中,我将重点介绍为希望将应用程序移植到 Android Wear 平台的 Android 开发人员提供一系列技巧和资源。Android Wear 是 Android 操作系统为智能手表提供的新平台。该框架非常紧凑且资源有限,并非所有服务和功能都可用,同时开发人员还需要注意,他们应避免应用程序使用过多的 CPU、RAM 或电池电量。本文将涵盖 Android Wear 编程的各个方面,包括设计技术、高效应用和程序员技巧。阅读本文后,您将能够创建自己的 Android Wear 应用程序。 

如果您是经验丰富的 Android 开发人员,那么学习开发 Wear 应用程序不会花费太多时间。SDK 相同,IDE 相同,过程相同,只是在编程和部署时有几点需要注意。本指南将讨论所有这些情况,请继续阅读。:-)

要求

在开始 Android Wear 编程之前,我想强调一下先决条件。它们将确保您理解本指南中的内容,您可以肯定地阅读它,但要从中学习,您需要对核心概念有基本了解。 

本指南的 IDE

好吧,目前广泛使用两种 IDE。Eclipse 和 Android Studio。两者都可以满足您开始 Android Wear 应用程序编程的需求!您可以获取这两种 IDE 的工具和插件,Google 会自动将更新推送到 Android Studio,而对于 Eclipse,您需要为 ADT 获取一些额外的插件。如果您无法决定,为什么不去 Android SDK 网站 选择最适合您的呢?在本指南中,我将使用 Android Studio,因为它官方的 Android IDE。 

编程语言

Android 支持 C/C++ 的原生编程,但我还没有读过任何开发者发布的文章说可以使用 NDK 编写 Android Wear 的应用程序。所以,我建议您至少具备 Java 语言的初学者水平知识。我比较喜欢直接分享,所以我不推荐任何第三方教程或 PDF,请参考 Oracle 指南来学习 Java。 

我也会尽我所能说英语,无论是给新手还是专家! :-)

还有什么吗?

是的,我希望您对设备模拟有一定的了解。在调试时,通常会使用模拟器或连接开发设备进行调试。当然,您不会将 APK 上传到 Google Play 商店在您的设备上进行测试,对吧?为此,您必须了解什么是设备模拟。 

如果您是 Android 编程的新手,我建议您先了解一下 Android 架构和编程概念。CodeProject 提供了一个很棒的 Android 初学者教程指南,请前往那里。 

说了这些,如果您要阅读开发阶段调试和部署应用程序的部分,我也希望您了解命令行界面。由于我们将使用的模拟器没有 Google Play 商店,我们将使用命令行通过 ADB 在设备上安装 APK 并执行其他操作。 

建议也了解一些关于Telnet 的知识。在 Android 手机和 Android Wear 的调试和连接中,我们将使用 telnet 服务在我们的设备模拟器之间进行通信。 

什么是 Android Wear?

Android Wear 是 Android 在智能手表上的实现。从用户的角度来看,它只是戴在手腕上的一块手表,除了计时功能外,还具有一些附加功能。从开发者的角度来看,这是一个为用户创建应用程序或服务的新平台。它不仅仅是一块手表,更是用户手腕上的一个迷你智能手机。用户可以在手腕上使用他们手机上已安装的大部分应用程序。发送短信、获取目的地路线以及其他服务已添加到 Android Wear 的 API 中。 

Android Wear 的几个要点是

  1. 它由 Android 开发——还有什么比这更让 Android 爱好者开心的呢
  2. 它使用相同的 SDK。 
    应用程序的创建方式相同,但功能较少,开发人员还必须限制自己使用这些有限的功能,以确保他们不会耗尽两端设备的资源。:-)
  3. 提供自定义功能。
  4. 可连接到您的手持 Android 设备。 
  5. 提供传感器,充分利用您的设备!
  6. 直接将日常使用的应用程序带到您的手腕上。例如,用户将能够从设备获取路线。 
  7. 支持语音命令。
  8. 支持 iPhone! 
  9. ……并且还在不断发展。

好吧,这些只是一些可以提到的点,我当然可以就它们写更多内容。但您明白了。Android 正在投入越来越多的时间来构建更强大的框架。 

在接下来的章节中,我将讨论构成 Android Wear 应用程序的各种组件及其 API。到本文结束时,您将能够运用这些 API 创建自己的应用程序,并且您还可以利用您在 Android API 和 Android Wear API 方面的现有和持续经验来创建有用的东西。 

Android Wear 服务 — API 包

在 Java 中,您可以为每个目的创建一组对象(类)和接口。然后,您可以将它们合并到一个包中。该包包含对象,其他开发人员可以使用其包名来调用这些对象。在 Android SDK 中,Android Wear 包位于 android.support.wearable 包下,其中包含许多包,每个包对应一个 API 或功能。目前,Wear 支持以下一些重要功能:

  1. 卡片
    紧凑型通知!非常有用,也许您可以将它们视为通知。但 Android 团队称它们为“卡片”。 
  2. 输入
    我是否提过您可以在 Wear 上使用语音命令?这类功能收集在 android.support.wearable.input 包中。 
  3. 伴侣应用
    伴侣应用实际上是一个手持应用程序,您的 Wear 应用程序嵌入在该手持应用程序中,然后推送到 Wear。Android Wear 不支持直接从 Play 商店下载应用程序。您在手持设备上下载应用程序(以及 Wear 应用),然后它会自动安装到您的 Wear 设备上。
    用于开发目的:但是,您可以直接将应用程序安装到 Wear 设备上进行开发。 
  4. 表盘
    到目前为止,我在 Android Wear 中最喜欢的功能是能够更改表盘,从数字到模拟,再到图库预览,再到小工具!包含此功能的包位于 android.support.wearable.watchface 下。

Android Wear API 中还提供了其他包和功能,但我不会讨论它们,以确保我保持我的面向初学者的英语风格。上面讨论的服务用于创建 Android Wear 应用程序,它们使用相同的 SDK 和相同的东西,只是手表中的服务和功能不如您的手持设备多。服务和资源特别包括: 

  1. CPU — 当然,您的移动设备可以拥有八核,但到目前为止,手表还没有达到这个核心数。因此,保持 CPU 使用率是开发人员必须注意的。 
  2. RAM — 到目前为止,我只发现手表(指基于 Android Wear 的手表)拥有 512 MB RAM,这对于手表来说太多了,而对于开发人员来说又太少了!如果您不高效地使用它,它可能会耗尽手表上的几乎所有资源。从 CPU 开始。 
  3. 电池电量 — 这些数字设备的问题在于它们会耗尽大量电量,用户需要定期为设备充电。CPU 使用率、亮度级别和图形是可能增加电池消耗的因素之一。您必须确保您编写的应用程序不会违反这些设计原则,以免用户不得不随身携带充电器,

好了,现在让我们继续学习如何为 Wear 构建应用程序。我希望您现在已经有了关于 Wear 的“如何做”和“为什么做”的想法。:-) 在本文中,我将创建一个简单的 Android Wear 应用程序,功能不复杂。目的是将所有内容解释到核心,这样您在上面构建时就不会遇到太多困难。 

创建应用程序

我将使用 Android Studio 创建一个新的 Android Wear 应用程序,您也可以使用 Eclipse。首先,请确保您拥有所需的 SDK 版本。创建 Android Wear 应用程序需要这些 SDK 版本。 

  1. SDK 工具必须是 23 或更高版本。 
    我不是在说 SDK 本身,而是 SDK 工具。这是 SDK 管理器中的一个单独选项。 
  2. Android SDK 20 或更高版本。 
    Android KitKat 是 SDK 版本 19,而为 Wear 设计的版本是 20。名称相同,但版本不同。查看以下图片,它们将阐明一些问题。 


图 1:在 Android Studio 中安装(或确认)Android SDK 工具。


图 2:在配置了 Android 开发的 Eclipse IDE 中安装(或确认)Android SDK 工具。


图 3:API 版本 19 和 20。对于 Wear,最低要求的 SDK 版本是 20。

以上图片展示了 Android Wear 编程所需的组件。现在我们需要创建一个新项目,很简单。在 Android Studio 中创建一个新项目,并随意命名。它们不需要遵循,我使用了 **HelloAndroidWear**。您需要考虑的一件事是,在创建新项目时,您需要同时选择 Phone 和 Wear。选择所需的平台版本,即可开始。 

  1. 对于手机
    手机伴侣应用程序所需的最低版本是 Android 4.3。您应该仔细选择平台,尽管您可以选择 Android 4.3 之前的框架,但它们将与 Android Wear 不兼容。 
    Android Wear 应用程序要求 Android 4.3.
  2. 对于 Wear
    Android 4.4W 或更高版本!:-)


图 4:您可以选择 Android 4.4W;这并没有什么区别,但受众更多。 

在接下来的窗口中,只需选择“Blank Activity”(空白活动),因为我们需要了解如何从头开始构建应用程序。空白活动已经设置好了基础,因此是“从头开始”。;-)


图 5:在移动设备上选择“Blank Activity”。


图 6:为 Wear 设备选择“Blank Activity”。

创建应用程序后,您将在工作室中看到以下项目,创建了两个项目,我们只对“**wear**”部分感兴趣。每个部分都有自己的 Manifest 文件、包和资源。这些资源分别用于两个设备。这些 Manifest 还根据使用的框架和设备保存了单独的信息。在手持设备上,使用“**mobile**”的 Manifest 和资源,而在 Wear 设备上,则使用它自己的 Manifest 和资源。这有助于分别维护不同的框架。 


图 7:“Mobile”和“Wear”被归类在单独的文件夹下。

我们只对“**wear**”部分感兴趣,并且只剖析我们项目的这部分。手机应用只是一个可以在运行 Android 的移动设备上安装的普通 Android 应用程序。如果您打开项目,它将有一个活动(我们选择的空白活动)以及它将运行的后端代码。还有一些其他的布局和其他内容,那是原生的 Android 内容。所以,如果您曾经开发过 Android 应用程序,您就会知道那是什么。 


图 8:Android Studio 中 Wear 应用程序项目的目录结构。

需要注意的是,Android Wear(在撰写本文时)有两种形状。 

  1. Round
  2. 平方

尺寸会因制造商的设计理念等因素而异。Android Wear 能够为这两种情况维护 UI。圆形和方形屏幕不一定具有相同的 UI 功能、UX 任务和尺寸。为了克服这些问题,Android 提供了创建独立 UI 的能力。这将为您思考和设计 UI、按钮、控件等留出时间。为此,在我们的 activity_main.xml(用于渲染布局的文件)中,我们将只创建一个 WatchViewStub。该对象然后包含我们的 UI 定义。 

<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.WatchViewStub
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/watch_view_stub"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:rectLayout="@layout/rect_activity_main"
    app:roundLayout="@layout/round_activity_main"
    tools:context=".MainActivity"
    tools:deviceIds="wear">
</android.support.wearable.view.WatchViewStub>

在上面的代码中,请关注粗体文本。这些属性定义了每种情况要使用的布局。您可以为每个屏幕指定要使用的布局文件,以便为圆形屏幕和方形布局的用户创建更好的 UI 和 UX。 

创建应用程序的 UI

下一步是创建应用程序的 UI。UI 在布局文件中创建。*抓阄,方形屏幕我给你一个机会*!打开 rect_activity_main.xml 并进行编辑,可以在设计视图或文本模式下进行。它是一样的,原生的 Android UI! 


图 9:带有按钮、TextView 和 EditText 字段的 Android UI。

您可以使用移动设备创建视图,或者可以将布局或模型更改为 Wear。这没有什么区别。任何一种都可以正常工作。此外,白框显示了“空”TextView 对象的位置。我删除了用户按下按钮时要写入的消息字符串。

处理事件和后端事务

与其他所有 Android 应用程序一样,您的所有应用程序的业务逻辑都放在后端,一个 Java 文件中。Activity 类负责处理活动的状态、事件和其他事务。与任何其他 Android 应用程序一样,不是吗?这里使用的是 MainActivity 类,我将编辑该活动来处理我按钮的点击事件。 

实际上有一个区别,在执行任何操作之前,我们将在 WatchViewStub 上渲染一个布局。布局(实际布局仍然是 activity_main.xml)什么都没有,我们将根据屏幕应用一个布局。一旦该布局根据屏幕被加载,我们就可以为活动应用事件处理和其他后端技术。我将在这里做同样的事情,我将为该按钮应用点击处理程序,并且我还将更改 TextView 中的文本并向用户致意。(我知道,提示缺失。)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);

    // Once the layout has been inflated, handle it for view-based actions and handling. 
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            // Initialize the variables (they are declared in class-scope, outside functions
            mTextView = (TextView) stub.findViewById(R.id.text);
            mButton = (Button) stub.findViewById(R.id.button);
            mEditText = (EditText) stub.findViewById(R.id.editText);

            // Handle the event
            mButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mTextView.setText("Hello " + mEditText.getText().toString() + "!");
                }
            });
        }
    });
}

直到第一行,代码与任何其他 Android 活动都基本相同。然后,它会到达一个点,在那里我们正在处理 **OnLayoutInflated** 事件。通过处理此事件,我们现在可以使用 UI 组件并附加侦听器或按我们想要的方式处理它们。这基本上是 Android 构建应用程序的方式。 


图 10:Android Wear 应用程序在模拟器中运行。

对于我们的基本应用程序,我们只需要了解如何操作,所以在此阶段我们可以构建一个简单的“Hello World!”应用程序。因此,我不会深入探讨您的设备能做什么的进阶主题。上面的应用程序可以获取用户输入(取决于设备如何响应),并且可以运行简单的 CPU 进程来问候用户。到目前为止,您将能够理解如何为您的 Android Wear 创建应用程序。下一部分是关于模拟 Android Wear 和建立连接等的进阶主题。在下一部分中,您将学习:

  1. 设置调试环境;设置模拟器。 
  2. 运行和测试应用程序。 
    在圆形和方形屏幕上进行测试。 
  3. 将 Android Wear 应用程序安装到您设备的模拟器上。 
  4. 使用“Telnet”会话连接到设备。 

那么,继续下一部分以了解更多关于 Android Wear 的开发内容。 

设置调试环境

在您能够使用模拟器实际调试应用程序之前,您需要在开发机器上创建一个。Android Studio 提供了一种很好的方法来实现这一点,您只需选择几项,它就会为您创建一个模拟器。好的方面是您可以获得一个 Shell 终端,您可以在其中执行诸如安装或卸载软件包之类的命令。一旦开始,您就会习惯它们!

创建模拟器

在本节中,您将看到如何为 Android Wear 和 Android 智能手机创建模拟器。只有当您想学习如何创建伴侣应用之间的连接或了解其工作原理时,才需要智能手机。否则,您只能为 Wear 创建模拟器并在其中测试您的应用程序。这(应该)就足够了。


图 11:在类别下选择 Wear 和您想要的设备类型。单击 Next 继续。


图 12:选择操作系统版本,最低版本是 **KitKat Wear**,此外您还应考虑使用 **x86** 映像,因为它们的性能更好,**Intel 的 HAXM**。(HAXM 仅在选定的机器上运行)


图 13:设置一些其他模拟器设置,如硬件配置文件、RAM 或 VM 堆大小等,然后就完成了。

完成后,您现在可以运行模拟器并测试您的应用程序。要在此测试您的应用程序,请播放应用程序或调试应用程序。Android Studio 将允许您选择要在其中测试应用程序的模拟器。 

您可以创建更多不同硬件或软件的模拟器,以便在不同的机器和设备上进行测试!非常方便。 

测试应用程序

要测试应用程序,请在模拟器中启动它。如果模拟器创建成功,Android Studio 会提示您选择要在其中运行应用程序的模拟器。Android Studio 会自行上传软件包到模拟器并运行它。就像上面**图 10** 中的一样。 

应用程序启动(我们知道,请看**图 10**),我们可以提供一些输入并查看它的作用, 


图 14:我输入了“Afzaal”,它用“Hello Afzaal”问候了我 — 更多信息请参见上面的代码。 

在圆形屏幕上测试!

在圆形屏幕的 Android Wear 上测试也一样,但略有不同。您必须编辑圆形设备的另一个布局文件。否则,当您尝试引用 UI 控件时,例如调用 

mTextView = (TextView) stub.findViewById(R.id.text);

它会抛出异常,因为该布局没有定义 ID 为 **text** 的 TextView。将其视为优点或缺点。这是为了确保您的应用程序在两个设备上都能按预期运行。 

附加章节

Android Wear 的开发和测试已完成最后一个章节,本节涵盖了任何可能有助于程序员开始 Android Wear 编程的附加内容。我会继续添加新的章节,当它们出现在我脑海中或眼前时(附有适当的引用),到目前为止,我发现“连接 Android 模拟器到 Wear 模拟器”是一个更具说服力的案例。 

连接 Android 模拟器到 Android Wear 模拟器

这是真实设备中的一种情况,例如在真实设备中,您的 Android Wear 本身并没有太多功能,只是显示时间。您的 Android 设备使其焕发生机。该设备包含 95% 的数据、进程和应用程序本身。Wear 只是以紧凑的方式呈现它们。但是,出于开发目的,应用程序直接安装到 Wear,了解它如何在真实世界中工作则是一个不同的故事。 

我一直在寻找这个问题的解决方案,并偶然发现了这个 Stack Overflow 线程,其中有相对直接的解释。我可以给您那个线程,但那将违反本指南的“面向初学者的英语”规则。所以,请允许我一步一步地指导您。 

我将从“**创建模拟器**”部分开始,并从那里开始教您。第一件事是确保您的两个模拟器都在运行,因为该过程需要您设置 Telnet 连接。您需要知道模拟器正在运行的端口。 

注意!在继续之前,请确保在您的平台上已激活 Telnet。在 Windows 中,您可以在“程序和功能”-->“启用或关闭 Windows 功能”-->“Telnet 客户端”(确保已选中)下打开它。这需要一些时间,然后您将为当前部分设置好环境。 

现在您需要掌握 ADB,如果您不清楚它是什么(就像我 5 小时前一样),它是一个命令行 Shell,允许您在设备上执行各种命令。您可以定位设备,获取设备列表,安装或卸载应用程序等等。所有这些都通过 ADB 完成。它包含在 SDK 文件夹的 Platform Tools 文件夹中。 

C:\Users\<username>\AppData\Local\Android\sdk\platform-tools

如果您直接运行它,它将无法工作。您需要为此运行命令提示符。您可以运行命令更改目录, 

cd C:\Users\<username>\AppData\Local\Android\sdk\platform-tools

或者,使用上下文菜单在此文件夹中运行命令提示符。现在您将能够执行 ADB 命令,例如运行一个命令来查看有多少设备已连接。 

adb devices

它将为您提供当前正在运行的设备列表。在我的例子中,它返回了两个结果(正在运行的两个设备)


图 15:目前正在运行两个模拟器。

从它们的名称上您无法区分哪个是哪个,为此,您可以查看模拟器窗口的标题。它会告诉您它的性质。 


图 16:这是一个 Android Wear 设备;将端口与列表中的设备进行匹配。 

在我们连接到设备之前,请注意一点,该设备当前在屏幕上显示状态。这是绘制在屏幕上以通知用户当前状态的。 


图 17:状态图标显示设备的当前状态。

设备当前显示

  1. 它未连接到 Android Wear 应用。 
  2. 它正在充电。 

首先,您需要安装 Android Wear,如果您的模拟器中有 Play 商店,请使用它。否则,您可以从此处下载 APK,并使用以下 ADB 命令在该模拟器上安装它。 

adb install <C:\location\of\apk-file.apk>

位置需要正确,否则您会收到“无效的 APK 文件”或其他类似问题。您也可以考虑先启用 USB 调试。该应用程序将允许您与 Wear 设备通信,连接一个设备并查看您可以做什么。 

现在创建一个 Telnet 会话,以允许模拟器相互通信。在您的终端中执行此操作, 

telnet localhost <mobile-emulator-id>

在我的例子中是 5554。您可以查看您的手机设备是哪个。请务必正确输入,否则将无法工作。如果一切顺利,它将显示以下结果, 


图 18:显示响应。

现在,您可以创建会话并基于 TCP 协议创建连接。执行以下命令, 

redir add tcp:5601:5601

它将为您设置好一切,如果它显示有问题。您应该明白确实有问题,再试一次。;)

在我的例子中,它给了我正确的响应,并且我成功连接了设备。 


图 19:设备已连接并共享其资源。Android Wear 应用还在操作栏中显示“已连接”通知。

接下来,我们也可以将数据从 Android 手机发送到 Android Wear,看看。 


图 20:右侧是空闲的 Android Wear。 


图 21:Android Wear 显示一张“卡片”,这是从移动设备上的 Android Wear 应用发送的。 

好了,各位,今天就到这里。希望在下一篇关于 Android Wear 的文章中见到您!:-)

关注点

在本文中,您了解了 Android Wear 的核心、其应用程序以及它们是什么。您学习了如何为 Android Wear 构建应用程序,并且还学习了如何在您自己的机器上使用不同的硬件和软件配置文件来调试这些应用程序。

使用的应用程序非常简单,因为我不想让大家陷入 Android 操作系统的复杂性中,只想给您一个 Android Wear 的概述。您只是触及了表面。输入包和其他功能为您提供了从用户获取输入的有效方法。**不要**像我一样以同样的方式获取输入,那是教学目的,对于商业用途,请务必**三思而后行**您的设计。 

如果您错过了什么,或者在某个部分感到困惑,请留下您的反馈。我将非常乐意听取您的意见!:-)

历史

  1. v2
    已更改源代码,移除了编译后的二进制文件。您需要自己构建源代码。 
© . All rights reserved.