【问题标题】:Create "ok glass" style menu, within glass app在玻璃应用程序中创建“ok glass”样式菜单
【发布时间】:2013-11-24 19:44:25
【问题描述】:

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

与“okay glass”屏幕上的“拨打电话”提示或“发送消息到”提示一样,我希望我的应用在您使用语音选择时具有更多语音选择选项。通过这两个示例,您将看到一个联系人列表,您可以上下点头以查看更多信息,并且该应用程序只会在您选择了显示的选项之一时采取进一步的行动。目前有什么方法可以在我自己的应用上做到这一点?

感谢任何输入!

【问题讨论】:

  • 我也在找这个……还有不清楚的可以在内置相机应用等应用中看到。当您通过语音命令拍摄照片或视频时,您会在刚刚拍摄的照片或视频的上下文中获得“ok glass”选项。这对于任何应用都非常有用。
  • 这是另一个问题的重复,Alain 回答说在 GDK 中还不能提交功能请求:stackoverflow.com/a/20134647/1174526

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


【解决方案1】:

您可以在 Activity 启动后调用 Intent 来显示语音识别器。因此,您可以在启动时触发语音并提示,然后在 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

不知道有没有其他办法。

【讨论】:

  • 我试过这个,它在一定程度上有效,但它仍然不是我要找的那种菜单。这样,用户所说的文本将在他们开始说话时替换提示,并且他们可以在这里说任何话。相反,如果他们说我的一个动作,我只希望玻璃采取行动。猜猜这还不可能……
  • 我已经尝试过这种方法,但发现它仅在您有活动的互联网连接时才有效。来自文档:“此 API 的实现可能会将音频流式传输到远程服务器以执行语音识别,这可能会占用大量带宽。”
【解决方案2】:

我从another SO question 找到了这个答案,看起来完全符合您的要求。我自己为自己的玻璃器皿尝试过,效果很好。正如下面的答案中提到的,需要注意的是,使用相同“ok glass”语音命令的其他应用程序将共享子菜单;例如,在以下示例中,某些其他应用程序可能会添加其他游戏,例如“高尔夫”。另一个潜在问题是您必须在子菜单中为您想要的每个选项提供一个 Activity 或 Service。

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

例如(假设res/xml/play_a_game_trigger.xml代表字符串“play a game”的语音触发器):

<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>

会给你一个看起来像的语音菜单流

ok glass → play a game → Tennis
                         Bowling

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

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

【讨论】:

    【解决方案3】:

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

    详情请见https://developers.google.com/glass/develop/gdk/input/voice#launching_glassware,但基本上你会的

    1. res/values/strings.xml 添加资源,描述触发器和提示
    2. res/xml/&lt;my_voice_trigger&gt;.xml中创建一个以字符串值作为关键字并设置输入提示的资源
    3. 为 VOICE_TRIGGER 操作注册一个意图过滤器

    (顺便说一句,动词似乎是最好的语音触发器——它们更自然地与“ok, glass”菜单项配合使用。)

    【讨论】:

    • 是的,我知道该怎么做,但我在选择我的应用程序后询问是否有办法呈现另一个菜单,其作用类似于“ok google”菜单,但使用我的自定义选项。
    【解决方案4】:

    现在您可以使用框架 api 在您的活动中显示一个 ok 玻璃菜单, 查看有关上下文语音命令的文档

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多