如何在卡上列出所有可用的上下文命令?

时间:2014-09-23 15:09:42

标签: google-glass google-gdk

我想知道如何在卡上列出所有可用的上下文命令,其中“Ok,glass”位于页脚并准备好接受命令。 我的应用程序有超过10个上下文命令,用户可能不记得所有命令。

下面的代码只显示“Ok glass”作为页脚而页脚上方没有任何内容。但是,命令列表将在“Ok glass”命令后面显示。 我希望同时显示列表和“ok glass”。

请告知。

public class MenuActivity extends Activity {


    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        // Requests a voice menu on this activity. As for any other
        // window feature, be sure to request this before
        // setContentView() is called
        getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS);           
        setContentView(R.layout.start);
    }

    @Override
    public boolean onCreatePanelMenu(int featureId, Menu menu) {
        if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS||
                featureId == Window.FEATURE_OPTIONS_PANEL) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
        // Pass through to super to setup touch menu.
        return super.onCreatePanelMenu(featureId, menu);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS||
            featureId == Window.FEATURE_OPTIONS_PANEL) {

            switch (item.getItemId()) {
                case R.id.Atrig_menu_item:
                    // handle A trigger          
                    break;
                case R.id.Btrig_menu_item:
                    // handle B trigger
                    break;
                case R.id.Ctrig_menu_item:
                    // handle C trigger
                    break;
                case R.id.Dtrig_menu_item:
                    // handle D trigger
                    break;
                case R.id.Etrig_menu_item:
                    // handle E trigger
                    this.finish();                
                default:
                    return true;
            }
            return true;
        }
        // Good practice to pass through to super if not handled
        return super.onMenuItemSelected(featureId, item);
    }

}

1 个答案:

答案 0 :(得分:0)

在XE 21中,您无法更改上下文语音命令的行为。

如果要显示所有可用选项,在通过说“Ok Glass”激活Contextual Voice命令之前,您必须创建一个显示菜单R.menu.main内容的布局。

但即使您使用R.menu.main中的所有项目创建布局,当您在应用中说“Ok Glass”时,上下文语音命令也会再次显示您的菜单。

最好的方法是在主要布局中显示一些R.layout.start的文本或信息,然后在用户说出“Ok glass”时让Contextual Voice命令显示菜单。

以下是一个链接,向您展示如何构建简单的布局:Tutorial Linear Layout