Google智能助理语音交互打开命令

时间:2017-12-27 08:59:31

标签: android api voice interaction

有没有可靠的方法来检查我的活动是从Google智能助理(使用“开始/打开”命令)还是从启动器图标启动的?

有关Open命令的文档说明

  

(默认工作;没有特定意图。)

所以我并不乐观。

2 个答案:

答案 0 :(得分:1)

答案简短:实际上没有

默认语音命令:Open XYZ其中XYZ是应用程序的名称,实际上没有附加任何信息,以告知您该请求已由 Google智能助理。

  

正如我已经告诉过你的那样,可能这样做是为了防止开发人员附加用户无法从open命令中获得的行为,这些行为应该只是打开应用程序,而不是别的。

注意:如果用户指定了其他命令,例如Open XYZ and play ABC song,则会产生自定义意图,您可以使用getAction()方法中的onCreate()获取该自定义意图如here所述,但这不是您的具体情况。

参考文献:https://developers.google.com/voice-actions/system/#open_actions

答案 1 :(得分:1)

我在调试应用程序时发现以下差异,如果它是由Google助手语音交互打开命令启动

当它由Google助手语音互动打开命令启动时

你会得到“android.intent.extra.REFERRER_NAME”包含getIntent()中的键.getExtras()

  

getIntent()。getExtras()。的containsKey( “android.intent.extra.REFERRER_NAME”)

if(getIntent().getExtras()!= null && getIntent().getExtras().containsKey("android.intent.extra.REFERRER_NAME")){
            Log.e(TAG, "onCreate: From Voice assistance");
        }else{
            Log.e(TAG, "onCreate: Not From Voice assistance");
        }

但如果从菜单开始,您将无法获得该密钥。

可能这可以解决您的问题。