在初始设置之后,如何在沉浸式*中自定义Glass上下文语音菜单?

时间:2014-07-15 15:38:28

标签: google-glass google-gdk

我已经成功填充了我的玻璃器皿沉浸的上下文语音菜单,但我希望能够在 onPreparePanel()或onCreatePanelMenu()中的初始设置之后更改菜单,如上所述在这里:Programmatically populated contextual "ok glass" menu

理想情况下,其中一个回调将在收到&#;; ok,glass'之后被调用。语音命令但据我所知,它们都不是。结果,你第一次进入活动时,你仍然坚持使用语音命令菜单的版本。

到目前为止,唯一一个接近的黑客就是当我从设备上取下GlassVoice.apk并设置手动VoiceListener时(如下所述:Glass voice command nearest match from given list)。当检测到语音命令时,会调用onVoiceCommand,我尝试通过调用invalidateOptionsMenu()(无效果)或getWindow()来强制刷新菜单.invalidatePanelMenu(WindowUtils.FEATURE_VOICE_COMMANDS)。第二个看起来它试图拉起菜单,但然后立即再次隐藏它。

如何在活动的生命周期中动态更改上下文语音菜单?

1 个答案:

答案 0 :(得分:4)

我实际上只是写了一个示例应用程序,这对我来说很好。

务必使用onCreatePanelMenu()创建语音菜单并检查

if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS || 
    featureId == Window.FEATURE_OPTIONS_PANEL) ...

为手动菜单和语音菜单充气。

要在onMenuItemSelected()中同时刷新两者,请务必同时调用invalidateOptionsMenu()来刷新触摸菜单,并getWindow().invalidatePanelMenu(WindowUtils.FEATURE_VOICE_COMMANDS)来刷新语音菜单。我只是在第一个菜单项选择上翻了一个布尔值,我用它来确定是否应该对旧菜单或新菜单进行膨胀。

您在运行什么版本的Glass?