有没有任何方法可以通过编程方式填充我的玻璃器皿中的自定义"ok玻璃“菜单?
我有一个应用程序,用户将沉浸其中,主要通过语音命令与系统进行交互。浸没过程由一个显示不同数据集的CardScrollView组成。这些设备被添加并从蓝牙服务中动态移除,与电话交谈,玻璃单元无法预先知道新的设备将出现什么。
我希望用户能够做的是列出语音菜单中的所有当前设置,并从中选择要切换到的设置。例如,如果我现在有集合A、B、C和D,我希望用户能够说"ok glass,go to set",查看带有A、B、C和D的子菜单,然后说"C“在视图中切换到set C。
这有可能吗?
glassware将在一个与MyGlass完全没有连接的封闭环境中运行,因此带有开发权限的菜单的自定义语音命令不是一个问题。
发布于 2014-06-30 19:47:03
据我所知,当用户发言时,您希望您的应用程序已经在运行。如果这是正确的,那么您可以简单地用上下文语音命令实现一个自定义菜单。我相信,在通过重写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是目前要显示的项目列表。例如,可以使用后台服务更改其内容。
https://stackoverflow.com/questions/24386276
复制相似问题