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

能否在Android应用中集成Google Assistant?SDK集成及功能实现咨询

Android集成Google Assistant实现语音交互与SDK集成指南

前期准备

  • 确保项目目标API等级≥23,且已配置Google Play服务
  • 登录Google Cloud控制台创建项目,启用Google Assistant API,生成OAuth 2.0客户端ID(类型选Android,填写应用包名和SHA-1指纹)
  • 将生成的google-services.json文件放置在项目的app目录下

集成Google Assistant SDK

1. 添加依赖

在app/build.gradle的dependencies块中加入以下依赖:

dependencies {
    // Google Assistant SDK核心依赖
    implementation 'com.google.assistant.sdk:assistant-sdk:0.1.0'
    // 账号认证与Assistant服务依赖
    implementation 'com.google.android.gms:play-services-auth:20.7.0'
    implementation 'com.google.android.gms:play-services-assistant:17.0.0'
}

同步Gradle项目,确保依赖下载完成。

2. 初始化Assistant客户端

创建一个单例管理器类来统一管理Assistant实例,避免重复初始化:

class AssistantClientManager(private val context: Context) {
    private lateinit var assistant: Assistant

    fun initClient() {
        // 配置账号认证,指定所需权限
        val credentials = GoogleAccountCredential.usingOAuth2(
            context,
            listOf("https://www.googleapis.com/auth/assistant-sdk-prototype")
        ).setSelectedAccountName("your-google-account@example.com") // 也可通过账号选择器让用户自主选择

        val config = Configuration.Builder()
            .setCredentials(credentials)
            .build()

        assistant = Assistant.Builder(config).build()
    }

    fun getAssistant(): Assistant = assistant
}

在自定义Application类中初始化这个管理器:

class MyApp : Application() {
    lateinit var assistantManager: AssistantClientManager

    override fun onCreate() {
        super.onCreate()
        assistantManager = AssistantClientManager(this)
        assistantManager.initClient()
    }
}

记得在AndroidManifest.xml中声明这个Application类。

实现语音指令跳转页面与搜索

1. 处理Assistant交互响应

通过Assistant的API获取语音指令结果,解析后执行对应操作:

private fun startAssistantInteraction() {
    val assistant = (application as MyApp).assistantManager.getAssistant()
    val request = AssistRequest.newBuilder()
        .setAudioIn(ByteString.EMPTY) // 若需实时语音输入,此处传入录制的音频字节流
        .setDeviceConfig(DeviceConfig.newBuilder()
            .setDeviceId("your-unique-device-id")
            .setDeviceModelId("your-app-model-id")
            .build())
        .build()

    assistant.assist(request)
        .addOnSuccessListener { response ->
            val intent = response.intent ?: return@addOnSuccessListener
            // 根据Intent名称判断操作类型
            when (intent.name) {
                "action.navigate" -> {
                    // 获取跳转目标页面参数
                    val targetPage = intent.parameters.get("page").stringValue
                    when (targetPage) {
                        "ProductList" -> startActivity(Intent(this, ProductListActivity::class.java))
                        "UserProfile" -> startActivity(Intent(this, UserProfileActivity::class.java))
                    }
                }
                "action.search" -> {
                    // 获取搜索关键词
                    val searchQuery = intent.parameters.get("query").stringValue
                    // 调用当前页面的搜索方法
                    performLocalSearch(searchQuery)
                }
            }
        }
        .addOnFailureListener { e ->
            Toast.makeText(this, "指令解析失败: ${e.message}", Toast.LENGTH_SHORT).show()
        }
}

// 示例:当前页面搜索方法
private fun performLocalSearch(query: String) {
    // 此处实现你的搜索逻辑,比如更新RecyclerView数据、显示搜索结果
    searchResultTextView.text = "搜索结果: $query"
}

2. 自定义语音指令(可选)

如果需要精准匹配自定义短语(如"打开商品列表"、"搜索无线耳机"),可在Google Actions Console创建自定义Action,定义触发短语和参数映射,后续在应用中处理对应的Intent即可。

3. 触发交互的方式

  • 按钮触发:给按钮添加点击事件调用startAssistantInteraction():
findViewById<Button>(R.id.btn_launch_assistant).setOnClickListener {
    startAssistantInteraction()
}
  • 系统唤醒:支持"OK Google"唤醒,需在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

测试与调试

  • 确保测试设备已登录对应Google账号,且Google Play服务为最新版本
  • 运行应用后,触发Assistant交互,测试自定义指令是否能正确跳转页面或执行搜索
  • 若遇到权限问题,前往应用设置手动开启麦克风、网络及账号访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:47:58