在玻璃应用程序中创建“ok glass”样式菜单

时间:2013-11-24 19:44:26

标签: android voice-recognition google-glass google-gdk

我刚开始为Google Glass开发,我知道GDK是否相当新,所以这可能还不可能,但这就是我想要的:

与“打个电话”提示或“发送消息”提示在“好眼镜”屏幕上一样,我希望我的应用程序在您选择语音时可以选择更多语音选项。通过这两个示例,您将看到一个联系人列表,您可以向上和向下点头以查看更多内容,应用程序只会采取进一步操作,您选择了一个显示的选项。目前有没有办法在我自己的应用程序上做到这一点?

感谢任何输入!

4 个答案:

答案 0 :(得分:2)

您可以在活动开始后调用意图显示语音识别器。因此,您可以从启动时触发语音和提示,然后在您的Activity的onResume()中,通过某种提示调用语音识别器(或者您可以将收集到的初始语音串作为提示) :

    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra( RecognizerIntent.EXTRA_PROMPT, "ok glass, here's my prompt" );
    startActivityForResult(intent, 0);

然后,您需要一个onActivityResult()方法来处理VoiceRecognizer的返回形式。

这是GDK文档中描述的: https://developers.google.com/glass/develop/gdk/input/voice

不确定是否还有其他办法。

答案 1 :(得分:2)

我从another SO question找到了这个答案,似乎与您想要的完全一样。我亲自为自己的玻璃器皿试过它,效果很好。如下面的答案所述,有一点需要注意,使用相同“ok glass”语音命令的其他应用程序将共享子菜单;例如,在以下示例中,某些其他应用可能会添加其他游戏,例如“高尔夫”。另一个潜在的问题是,您必须为子菜单中的每个选项提供活动或服务。

“如果您在Glass上安装了多个活动/服务,这些活动/服务具有相同的语音触发器意图过滤器,则其所有名称(基于android:label<activity>的{​​{1}}属性当您说出语音触发时,<service>中的标记将出现在消歧“子菜单”中。

例如(假设AndroidManifest.xml代表字符串“玩游戏”的语音触发器):

res/xml/play_a_game_trigger.xml

会给你一个看起来像

的语音菜单流
<activity android:label="Tennis">
    <intent-filter>
        <action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
    </intent-filter>
    <meta-data android:name="com.google.android.glass.VoiceTrigger"
        android:resource="@xml/play_a_game_trigger" />
</activity>
<activity android:label="Bowling">
    <intent-filter>
        <action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
    </intent-filter>
    <meta-data android:name="com.google.android.glass.VoiceTrigger"
        android:resource="@xml/play_a_game_trigger" />
</activity>

请注意,此菜单还包含来自使用相同语音触发器的其他 APK的活动/服务。

您可以在GDK文档的Voice Input页面找到更多详细信息。“

答案 2 :(得分:0)

您是否在询问是否可以向Glass添加语音命令以触发您的应用?如果是这样 - 绝对。事实上,这是在GDK上启动应用程序的建议方法。

有关详细信息,请参阅https://developers.google.com/glass/develop/gdk/input/voice#launching_glassware,但基本上您将

  1. 添加资源到描述触发器的res/values/strings.xml并提示
  2. res/xml/<my_voice_trigger>.xml中创建一个资源,该资源使用字符串值作为关键字并设置输入提示
  3. 注册VOICE_TRIGGER操作的意图过滤器
  4. (另外,似乎动词是最好的语音触发器 - 它们使用“ok,glass”菜单项更自然地流动。)

答案 3 :(得分:0)

现在你可以使用framework apis在你的活动中显示一个好的玻璃菜单, 查看有关上下文语音命令的文档

https://developers.google.com/glass/develop/gdk/voice#contextual_voice_commands