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

时间:2014-06-24 12:09:14

标签: google-glass google-gdk

有没有办法填充自定义" ok glass"以编程方式在我的玻璃器皿中的菜单?

我有一个应用程序,用户将沉浸其中并主要通过语音命令与系统交互。浸入式由CardScrollView组成,显示不同的数据集。这些套件是通过与电话交谈的蓝牙服务动态添加和删除的,并且玻璃单元不能预先知道将出现什么新的集合。

我希望用户能够在语音菜单中列出所有当前设置,并从那里选择要切换到的设置。例如,如果我现在有A,B,C和D组,我希望用户能够说'#34; ok glass,去设置",看A和B的子菜单,C和D,然后说例如" C"在视图中切换到设置C.

这一切都可能吗?

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

1 个答案:

答案 0 :(得分:3)

根据我的理解,您希望应用程序在用户说话时已经运行。如果这是正确的,那么您只需使用contextual voice commands实现自定义菜单即可。我相信您可以通过覆盖onPreparePanel来重新填充菜单。

我还没有对它进行测试,但是从指南中猜测了一下:

  @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是目前要显示的项目列表。例如,您可以使用后台服务更改其内容。