android-多个语音触发器可在Glass上启动相同的活动并区分使用了哪个
作者:互联网
我想使用两个不同的语音触发器来打开同一活动,然后在此活动中,根据所使用的触发器来决定要执行的操作.
不添加额外提示就可以吗?根据文档,仅当使用提示时,您才可以访问RecognizerIntent.EXTRA_RESULTS.
所以我的问题是,是否可以使用多个语音触发器触发同一活动,并且有什么办法可以在代码中知道使用了哪个触发器?
解决方法:
完成@Ferdau的操作后,我发现了使用活动别名和元数据的更好方法.
将包含第一个语音触发器的活动添加到您的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-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
}
标签:google-gdk,android,google-glass 来源: https://codeday.me/bug/20191029/1958834.html