gpt4 book ai didi

android - 多个语音触发器在 Glass 上启动同一个 Activity 并区分使用了哪个

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:44 26 4
gpt4 key购买 nike

我想使用两个不同的语音触发器来打开同一个 Activity ,并在这个 Activity 中,根据使用的触发器决定要做什么。

这是否可以在不添加额外提示的情况下实现?根据文档,只有在使用提示时,您才能访问 RecognizerIntent.EXTRA_RESULTS

那么我的问题是,是否可以使用多个语音触发器来触发相同的 Activity ,有没有办法在代码中知道使用了哪个触发器?

最佳答案

做了什么之后@Ferdau说,我找到了一个更好的方法来使用 Activity 别名和元数据。

将包含第一个语音触发器的 Activity 添加到您的 AndroidManifest.xml:

<activity android:name="com.package.MainActivity">
<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/glass_first_trigger" />
</activity>

然后在这之后,添加一个包含第二个触发器的 Activity 别名

<activity-alias
android:name=".StartMainActivityWithAParameter"
android:targetActivity="com.package.MainActivity">
<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/glass_second_trigger" />
</activity-alias>

然后,在代码上,您可以读取元数据值并决定要做什么:

ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(),
PackageManager.GET_ACTIVITIES|PackageManager.GET_META_DATA);
int secondVoiceTrigger = activityInfo.metaData.getInt("com.google.android.glass.VoiceTrigger");
if(secondVoiceTrigger == R.xml.glass_second_trigger) {
//TODO do different stuff
}

关于android - 多个语音触发器在 Glass 上启动同一个 Activity 并区分使用了哪个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com