沉浸模式

本指南将介绍猜测游戏形式的简单沉浸式体验的组件。游戏是沉浸感的绝佳用例,因为大多数游戏都需要自定义界面和输入控件。

在此过程中,您还将了解对于自行构建 Glassware 非常重要的设计、开发和分发提示。

准备工作

GitHub 上提供了 Charades 游戏的完整源代码。在开始之前,请将其导入 Android Studio,因为本指南会对其进行大量参考。

  1. 在“快速入门”屏幕中,依次点击从版本控制中签出 > Git
  2. 复制 Charades 中的克隆网址。
  3. 将克隆网址粘贴到 Vcs 代码库网址中,然后点击克隆
  4. 在下一屏幕上点击
  5. 在下一屏幕上点击 OK
  6. 构建项目,然后点击 Play 按钮,在已连接的 Glass 上运行项目。请务必查看示例的 README 了解调用详情。

学习内容

您将学习如何使用 Android SDK 中的组件构建沉浸式沉浸式体验,然后使用 GDK 打造 Glass 体验。 下面列出了您需要了解的主题:

  • 使用我们提供的设计资源设计界面流程
  • 设计语音触发器以启动 Glassware
  • 使用 Android activity 定义游戏的界面结构
  • 构建允许用户选择游戏选项的 Android 菜单项
  • 通过主菜单中的语音触发器集成到 Glass 体验中
  • 使用 GDK 手势检测器,用于检测用户输入和执行自定义操作
  • 了解简单的 Android 界面实现,这些实现可进一步优化和遵循 Glass 样式
  • 了解分发流程以及发布 Glassware 时需要关注的内容

设计

在开始开发之前 先花些时间设计您的 Glassware这样,您便可以更好地了解哪些界面流程在 Glass 上效果最佳、您将使用哪些语音指令,以及您的卡片将如何显示。

当然,设计 Glassware 是一个迭代过程,您现在设计的部分功能会有所变化,但一开始就要充分利用这些工作对打造出色的体验至关重要。

界面流程

设计界面流程是一项简单的练习,让您可以在编写一行代码之前直观呈现 Glassware。 我们所做的一切都是针对我们打造的 Glassware!

我们来了解一下 Charades 沉浸的主要界面元素,以便您了解界面的工作原理,以及在创建您自己的 Glassware 时此流程会有多大帮助。

启动画面

用户启动 Charades 沉浸模式时,首先会看到此屏幕。它可让用户在进入游戏体验之前确定自己的屏幕方向,并且是用户熟悉的常规游戏结构。

当用户点按触控板时,会显示一个包含 2 个菜单项的菜单系统,即 New GameInstructions

说明模式

创建沉浸感时,输入机制有时很新颖,因此,应该让用户知道他们应该如何与沉浸式互动,尤其是与游戏互动时。

这组卡片会显示游戏说明,并指导用户如何玩游戏以及如何使用手势在界面中导航。用户通过点按启动画面中的说明菜单项,即可打开此屏幕。

游戏模式

这些屏幕构成了主游戏流程。用户可以通过点按启动画面中的新建游戏菜单项,进入此流程。

这组卡片会显示随机字词(最多 10 个)。用户可通过向前滑动来跳过某个字词,然后在正确描述该字词时点按触控板。

游戏结果屏幕

此屏幕会显示游戏结果。最开始会显示“Game over”屏幕,用户可以向前滑动以查看游戏结果。当用户点按任何一张结果卡片时,系统会显示新建游戏菜单项,以便用户开始另一场游戏。

语音命令

您应该在设计过程中尽早确定语音指令。语音指令可让用户从 Glass Home(时钟卡片)语音菜单(如果需要)启动 Glassware,这也是您设计 Glassware 的主要方式之一。

例如,发布更新命令适用于即发即弃的模型,在该模式下,用户可以说出该命令和一些文本,而 Glassware 无需任何进一步的用户干预即可处理该命令和文本。这样一来,用户就能快速恢复正常运行

另一方面,对于像玩游戏这样的内容,您通常需要让用户进入启动画面,以便他们首先确定方向。由于此语音指令很可能会带来沉浸感,因此您可以预期用户会看到额外的屏幕和菜单,从而开始游戏。在语音指令之后立即让用户进入游戏体验通常是很糟糕的游戏体验。

小夏使用玩游戏语音指令。用户调用语音指令后,系统会显示 Charades 启动画面,提示用户点按查看更多选项(在本例中为新建游戏说明)。

卡片布局

无论您是要构建沉浸式体验还是实时卡片,都应尽可能使用 CardBuilderXML 布局

通常情况下,您仍然需要构建自己的布局,因此请按照我们的界面准则操作,以获得外观最佳的 Glassware。

秒表遵循常规布局准则,但具有使用标准 Android 组件(如视图和布局)的自定义界面布局。

开发

如需开发沉浸式体验,您可以使用与 Android 开发相同的工具来构建大部分 Glassware,然后使用 GDK 插件中的 API 访问特定于 Glass 的功能,例如手势检测器和语音指令。

您将经常使用常用的 Android 组件创建 Glassware,但请注意,有些概念有时是不同的。例如,不要将沉浸感与 Android activity 相当。沉浸体验是为 Glass 设计的体验,该体验使用一个或多个 Android activity 以及 GDK 和 Android SDK 的许多其他组件构建而成。

“开发”部分的其余部分介绍了 Charades 游戏的结构,以及您之前导入的项目的主要组件。建议您现在启用 Android Studio,以便按照说明操作。源代码本身包含注释,因此,本部分将介绍每个文件的简要用途,并介绍一些可应用于您自己的 Glassware 的实用提示。

下面简要概述了 Charades 的主要组成部分:

  • 用于接入 Google Glass 主菜单的语音触发器声明。
  • 启动屏幕 activity,让用户可以启动游戏或查看说明。此 activity 会启动说明 activity 或游戏内容 activity
  • 教程活动向用户展示了如何实际执行游戏的主要操作来玩游戏
  • 游戏活动允许用户实际玩游戏
  • 结果 activity 会显示游戏得分以及猜出和无法猜出的单词的列表。它还可让用户使用菜单项开始新游戏。

语音命令

您可以使用 XML 资源文件创建语音指令,该文件指定您使用的命令,然后在 AndroidManifest.xml 文件中指定 XML 资源。

以下文件与 Charades 语音指令关联:

  • res/xml/voice_trigger_play_a_game .xml - 声明要使用的语音指令。
  • AndroidManifest.xml - 声明在说出语音指令时要启动的 activity。

启动画面 activity

启动画面是用户启动 Charades 时最先看到的内容,并且在开始游戏之前引导他们。

以下文件与此 activity 相关联:

  • res/layout/activity_start_game.xml - 声明启动画面的布局。
  • res/menu/start_game.xml - 声明启动画面的菜单系统,其中包含说明新建游戏菜单项。
  • res/values/dimens.xml - 声明此项目的 activity 用于遵循 Glass 样式的标准卡片尺寸和内边距。
  • src/com/google/android/glass/sample/charades/StartGameActivity.java - 启动画面的主类。
  • res/drawable-hdpi/ic_game_50.png - 新游戏的菜单图标。
  • res/drawable-hdpi/ic_help_50.png - 说明的菜单图标。

游戏模式

将游戏的模型(游戏的状态)与界面分离开始终是一种很好的做法。CharadesModel 类会跟踪游戏得分、在游戏模式下猜测的词组数量以及各种指令的情况,以及用户是否在说明模式下浏览了这些指令。

以下文件与游戏模型相关联:

  • src/com/google/android/glass/sample/charades/CharadesModel.java

基础游戏活动

由于游戏的教程和游戏模式具有非常相似的功能和界面,因此此基类定义了这两者的通用功能。说明和游戏模式的 activity 扩展了该类。

以下文件与此 activity 相关联:

  • res/layout/activity_game_play.xml - 定义 Charades 的游戏模式和说明模式共享的布局。
  • src/com/google/android/glass/sample/charades/BaseGameActivity.java - 定义 Charades 中共享的游戏模式和指令模式的基本功能。

说明活动

说明 activity 显示了三张卡片,这些卡片说明了如何玩游戏。它会检测用户是否执行了卡片上显示的操作,然后才能继续。

以下文件与此 activity 相关联:

  • src/com/google/android/glass/sample/charades/TutorialActivity.java - 扩展 BaseGameActivity 并定义要显示的指令文本,以及如何在玩家完成游戏说明时处理手势。

游戏活动

游戏活动定义了游戏的主流程。 它会确定应显示哪些字词、如何保持得分、具有用于处理手势的手势检测器,并在游戏结束时启动结果 activity。

以下文件与此 activity 相关联:

  • GamePlayActivity - 扩展 BaseGameActivity,并包含主游戏流程逻辑。

结果 activity

结果 activity 会显示猜出的单词、未经猜测的单词和游戏的得分。它还包含一个菜单项,可让用户启动新游戏。

以下文件与此 activity 相关联:

  • res/layout/game_results.xml - 定义“游戏结束”卡片的布局
  • res/layout/card_results_summary.xml - 定义了用于显示列表中猜测出的和猜测的单词的布局。
  • res/layout/table_row_result.xml - 定义结果摘要的单独行布局。
  • src/com/google/android/glass/sample/charades/GameResultsActivity.java - 定义实际显示上述 XML 资源定义的布局和菜单的 activity。
  • res/raw/sad_trombone.ogg - 当用户尚未看完所有单词时要播放的声音。
  • res/raw/triumph.ogg - 当用户完整说出 10 个字词时要播放的声音。
  • res/drawable-hdpi/ic_done_50.png - 猜测图标,显示在猜对的字词旁边。

动画资源

以下动画资源进一步完善了 Charades:

  • res/anim/slide_out_left.xml - 这将为退出视图添加动画效果,使其滑出左侧(例如,传递某个单词时)。
  • res/anim/slide_in_right.xml - 用于为进入视图从右侧滑入(例如,当新字词进入视图时)添加动画效果。
  • res/anim/tug_right.xml - 如果您未在不使用滑动操作的视图上滑动,则此界面会定义一个滚动动画。这可让用户知道滑动没有效果。

Android 清单

AndroidManifest.xml 文件描述了 Glassware 的主要组件,以便系统知道如何运行该组件。Charades 的清单声明了以下内容:

  • Glassware 的图标和名称。如果有多个 Glassware 响应同一语音指令,则 Glass 会在主触摸菜单中显示此信息。
  • 与 Charades 相关联的所有活动。只有这样,系统才能知道如何启动 Glassware 的 Activity。
  • 语音指令和 intent 过滤器,用于在发出语音指令时启动特定 activity。
  • Glassware 的版本代码。每次将此 APK 的新版本上传到 MyGlass 时,都必须更新此代码(通常也包括版本名称)。