我的一对Glass今天早上更新了XE 17.3,现在,我定义的用于多个活动的任何语音触发器都不再有效。在以前的版本中,(我已经在XE 17.2对上测试了我的代码,我必须确保我今天没有破坏任何东西),如果多个活动被设置为使用相同的语音触发器,系统会提示您选择听到语音触发后从列表中。这是预期的行为(如果两个应用程序使用相同的触发器),实际上对于为您的应用程序创建子启动程序非常有用(这就是我使用它...说主要启动名称 - >得到一个在应用程序中可供选择的活动列表,全部自动并由系统处理)。
然而,现在,如果我的语音触发器被分配给我的清单中的两个或更多活动,它将显示在列表中,但是当你说“OK Glass - [语音触发器]”时它永远不会触发(它仍然会然而,使用水龙头工作。正如我所提到的,我在运行XE 17.2的一对上测试了完全相同的代码,它运行良好。我还从除了一个活动之外的所有活动中删除了触发器,当你这样做时它在17.3上工作......所以问题是当你有多个可能的活动处理给定的语音触发器时。
我的清单设置方式对我来说似乎是正确的(并且适用于较旧版本的固件):
<uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT" />
...
<!-- one of the activities. this is inside the application element, of course -->
<activity
android:name="com.someapp.MainActivity"
android:label="Option 1" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
</intent-filter>
<meta-data
android:name="com.google.android.glass.VoiceTrigger"
android:resource="@xml/voiceinput_main" />
</activity>
<!-- another activity, again inside the application element, sharing the same trigger -->
<activity
android:name="com.someapp.AnotherActivity"
android:label="Option 2" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
</intent-filter>
<meta-data
android:name="com.google.android.glass.VoiceTrigger"
android:resource="@xml/voiceinput_main" />
</activity>
而且,这个清单在XE 17.2上运行良好。任何人都知道在17.3中已经改变的东西会打破这个,或者看到任何看起来错误的东西?我知道<action android:name="android.intent.action.MAIN" />
行不是必需的,但删除它并不能解决问题。
谢谢!
答案 0 :(得分:1)
在我的情况下,我改变了我的语音触发字符串&#34;所有小写字母&#34;事情解决了我的问题,也许你可以尝试一下,自定义语音触发命令XE17.31
答案 1 :(得分:0)
这似乎只影响自定义语音触发器。我正在使用应用程序查看同样的内容我正在开发我使用的地方&#34;调试......&#34;作为触发器让我做一些事情来重置状态或启动测试操作。
如果您将触发器更改为列出here的现有命令,那么它应该再次开始工作。如果您以与我相同的方式使用该机制,您可能只需选择一个模糊的现有命令用于测试目的(我使用FIND_A_DOCTOR
,这似乎适合于调试目的) 。
如果你只是简单地使用自定义命令作为正常流程的一部分,可能它会成为一个被接受的命令,或者你最终必须切换到现有命令,因为自定义命令只能工作在调试中无论如何。