2013-11-24 116 views
8

我刚刚开始为Google Glass开发,并且我知道GDK是否相当新,所以这可能还不可能,但以下是我想要的:创建“ok玻璃”风格菜单,在玻璃内应用程序

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

任何输入赞赏!

+0

我也在寻找......对于那些还不清楚的人,你可以在内置相机应用程序等应用程序中看到它,当你通过语音命令拍摄照片或视频时,在刚刚拍摄的照片或视频的上下文中使用“OK玻璃”选项。这对于任何应用程序来说都是非常有用的。 – JRomero

+2

这是一个重复的另一个问题,阿兰回答说,它是不可能在GDK和提出功能请求:http://stackoverflow.com/a/20134647/1174526 – louielouie

回答

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

不知道是否有任何其他方式。

+0

我试过这个,它在一定程度上有效,但它仍然不是我正在寻找的那种菜单。通过这种方式,用户所说的文字将在开始说话时替换提示,并且他们可以在此处说出任何内容。相反,我只想让杯子在他们说出我的一个动作时采取行动。猜猜这是不可能的... – tVoss42

+0

我试过这种方法,但发现只有当你有一个活跃的互联网连接才能正常工作。 从文档: “该API的实施很可能会将音频传输到远程服务器,以执行可使用大量带宽的语音识别。” – Armentage

0

你问你是否可以添加一个语音命令给玻璃,将触发你的应用程序?如果是这样 - 绝对。实际上,这是在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动作

意图过滤器(顺便说一句,它出现吨帽动词是最好的语音触发器 - 它们会更加自然地与“ok,glass”菜单项流动。)

+0

是的,我知道如何做到这一点,但如果有方法显示另一个菜单,其行为与“ok google”菜单非常类似,但是使用我的自定义选项,我在后选择了要求。 – tVoss42

2

我从another SO question找到了这个答案,看起来和你想要的完全一样。我已经为自己的玻璃器皿自己尝试过,它完美地工作。正如在下面的答案中所提到的,一个告诫,其他应用程序使用相同的“OK玻璃”语音命令将共享子菜单;在以下示例中,例如,某些其他应用可能会添加其他游戏,例如“高尔夫”。另一个潜在的问题是,您必须为子菜单中的每个选项都有一个“活动”或“服务”。

“如果你有多个活动/上有相同的声音触发意图过滤玻璃安装的服务,他们的名字(基于<activity>AndroidManifest.xml<service>标签的android:label属性)会出现一个歧义的”子菜单“当你说那个声音的时候触发。

例如(假设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> 

会给你看起来像

ok glass → play a game → Tennis 
         Bowling 

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

你可以找到在Voice Input页的GDK文件的更多细节。”

0

现在你可以使用框架API来显示您的活动一个确定的玻璃菜单, 检查该文件内容相关的语音命令