有没有办法填充自定义" ok glass"以编程方式在我的玻璃器皿中的菜单?
我有一个应用程序,用户将沉浸其中并主要通过语音命令与系统交互。浸入式由CardScrollView组成,显示不同的数据集。这些套件是通过与电话交谈的蓝牙服务动态添加和删除的,并且玻璃单元不能预先知道将出现什么新的集合。
我希望用户能够在语音菜单中列出所有当前设置,并从那里选择要切换到的设置。例如,如果我现在有A,B,C和D组,我希望用户能够说'#34; ok glass,去设置",看A和B的子菜单,C和D,然后说例如" C"在视图中切换到设置C.
这一切都可能吗?
玻璃器皿将在一个完全没有MyGlass连接的封闭环境中运行,因此具有开发权限的菜单的自定义语音命令不是问题。
答案 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
是目前要显示的项目列表。例如,您可以使用后台服务更改其内容。