You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Android Things 1.0的Google Assistant带不同参数调用我的应用

嘿,我来帮你搞定用Google Assistant触发带参数Intent调用自定义Activity的需求!刚好我对Android Things 1.0和Assistant的整合流程很熟悉,给你一步步拆解:

第一步:先把项目升级到Android Things 1.0并配置基础权限

首先你得把现有Android Things 0.6的项目升级到1.0版本——毕竟0.6本身不支持Google Assistant,这是前提。升级后,在AndroidManifest.xml里做这几件事:

  • 添加Assistant所需的权限:
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 给你的目标Activity配置能接收Assistant Intent的属性,比如指定一个自定义的action(比如com.yourpackage.ASSISTANT_COMMAND),并设置exported="true"让外部能调用:
    <activity android:name=".YourControlActivity"
              android:exported="true">
        <intent-filter>
            <action android:name="com.yourpackage.ASSISTANT_COMMAND" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    
第二步:定义Assistant能识别的语音指令与Intent映射

你需要创建一个actions.xml文件放在res/xml/目录下,用来告诉Google Assistant哪些语音指令对应触发你的自定义Intent,还能传递参数。举个例子,假设你想实现“让我的应用播放音乐”和“让我的应用关闭灯光”这类指令:

<?xml version="1.0" encoding="utf-8"?>
<actions>
    <action intentName="com.yourpackage.ASSISTANT_COMMAND">
        <fulfillment url="android://com.yourpackage/.YourControlActivity" />
        <parameter name="action_type">
            <entity-set-reference entitySetId="action_types" />
        </parameter>
    </action>

    <entity-set entitySetId="action_types">
        <entity value="play_music">
            <synonym>播放音乐</synonym>
            <synonym>启动音乐</synonym>
        </entity>
        <entity value="turn_off_light">
            <synonym>关闭灯光</synonym>
            <synonym>关掉灯</synonym>
        </entity>
    </entity-set>
</actions>

这里的action_type就是传递给Intent的参数,不同的语音同义词对应不同的参数值。

第三步:在Activity中处理带参数的Intent

接下来在你的YourControlActivity里,接收并解析Intent的参数,根据参数执行不同行为。可以在onCreate()或者onNewIntent()里处理(如果Activity是单实例模式,用onNewIntent更合适):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    handleAssistantCommand(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    handleAssistantCommand(intent);
}

private void handleAssistantCommand(Intent intent) {
    if ("com.yourpackage.ASSISTANT_COMMAND".equals(intent.getAction())) {
        String actionType = intent.getStringExtra("action_type");
        if (actionType == null) return;
        
        // 根据参数执行不同逻辑
        switch (actionType) {
            case "play_music":
                // 执行播放音乐的代码
                startMusicPlayback();
                break;
            case "turn_off_light":
                // 执行关闭灯光的代码
                turnOffLight();
                break;
            default:
                // 处理未知指令
                showUnknownCommandToast();
                break;
        }
    }
}
第四步:在树莓派上测试验证

最后把应用部署到树莓派3上,然后:

  • 确保设备已经关联到你的Google账号,并且在Android Things设置里启用了Google Assistant
  • 对着设备说出你定义的语音指令,比如“OK Google,让我的应用播放音乐”
  • 检查你的Activity是否被唤起,并且对应逻辑是否正确执行

注意:如果遇到Assistant不识别指令的情况,可以在设备上重新同步Assistant的设置,或者检查actions.xml里的指令拼写是否准确。

内容的提问来源于stack exchange,提问作者Marc Alcantara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:59:25