其他分享
首页 > 其他分享> > android-多个语音触发器可在Glass上启动相同的活动并区分使用了哪个

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