首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式填充上下文"ok glass“菜单

以编程方式填充上下文"ok glass“菜单
EN

Stack Overflow用户
提问于 2014-06-24 12:09:13
回答 1查看 687关注 0票数 2

有没有任何方法可以通过编程方式填充我的玻璃器皿中的自定义"ok玻璃“菜单?

我有一个应用程序,用户将沉浸其中,主要通过语音命令与系统进行交互。浸没过程由一个显示不同数据集的CardScrollView组成。这些设备被添加并从蓝牙服务中动态移除,与电话交谈,玻璃单元无法预先知道新的设备将出现什么。

我希望用户能够做的是列出语音菜单中的所有当前设置,并从中选择要切换到的设置。例如,如果我现在有集合A、B、C和D,我希望用户能够说"ok glass,go to set",查看带有A、B、C和D的子菜单,然后说"C“在视图中切换到set C。

这有可能吗?

glassware将在一个与MyGlass完全没有连接的封闭环境中运行,因此带有开发权限的菜单的自定义语音命令不是一个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-30 19:47:03

据我所知,当用户发言时,您希望您的应用程序已经在运行。如果这是正确的,那么您可以简单地用上下文语音命令实现一个自定义菜单。我相信,在通过重写onPreparePanel显示菜单之前,您可以随时重新填充它。

我还没有测试过它,但从指南中猜测如下:

代码语言:javascript
复制
  @Override
  public boolean onPreparePanel(int featureId, View view, Menu menu) {
    if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) {
      menu.clear();
      for (MyMenuItem item : mCurrentMenuItems) {
        menu.add(Menu.NONE, item.getId(), Menu.NONE, item.getTitle());
      }
    }
    return super.onPreparePanel(featureId, view, menu);
  }

  @Override
  public boolean onMenuItemSelected(int featureId, MenuItem item) {
    if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) {
      switch (item.getItemId()) {
        case MENU_ITEM_A:
          // do something
          break;
        default:
          return true;
      }
      return true;
    }
    return super.onMenuItemSelected(featureId, item);
  }

MyMenuItem将是一个简单的类,它包含一个项的唯一id及其标题。mCurrentMenuItems是目前要显示的项目列表。例如,可以使用后台服务更改其内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24386276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档