Android 应用集成 Gemini API:从零开始构建一个简单的聊天机器人


前言

大家好!在这篇博客中,我将深入讲解如何使用 Android Studio、Retrofit 库以及 Material Design 组件,从零开始构建一个简单的聊天机器人,并集成 Google 的 Gemini API。我们将逐步完成以下步骤,并详细解释每个步骤的目的和实现方式,让我们开始吧!


1. 项目初始化和依赖添加

目的: 创建一个新的 Android 项目,并引入必要的库,以便进行网络请求和 UI 开发。这里,我的项目名称为geminiapi_demo2

步骤:

  1. 创建项目: 在 Android Studio 中,选择 “File” -> “New” -> “New Project”,选择 “Empty Activity” 模板,并设置项目名称、包名等。

  2. 添加依赖: 打开 build.gradle (Module: app) 文件,在 dependencies 块中添加以下依赖:

    implementation 'com.squareup.retrofit2:retrofit:2.9.0' // Retrofit 库,用于网络请求
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0' // Gson 库,用于 JSON 数据解析
    implementation 'com.google.android.material:material:1.11.0' // Material Design 组件库,用于构建简单且相对美观的 UI
    
    • retrofit Retrofit 是一个类型安全的 HTTP 客户端,用于简化网络请求。
    • converter-gson Gson 是一个 Java 库,用于将 JSON 数据转换为 Java 对象,反之亦然。
    • material Material Design 组件库提供了各种预定义的 UI 组件,可以帮助我们快速构建美观的 Android 应用。
  3. 同步 Gradle: 点击 “Sync Now” 按钮,同步 Gradle 文件,下载并安装依赖库。

2. Retrofit 配置

目的: 创建一个 Retrofit 客户端类,用于发送 HTTP 请求到 Gemini API。

步骤:

  1. 创建 ApiClient.java 文件:com.example.geminiapi_demo2 包下创建一个名为 ApiClient.java 的 Java 文件。

  2. 添加代码: 将以下代码添加到 ApiClient.java 文件中:

    package com.example.geminiapi_demo2;
    
    import retrofit2.Retrofit;
    import retrofit2.converter.gson.GsonConverterFactory;
    
    public class ApiClient {
         
        private static final String BASE_URL = "https://generativelanguage.googleapis.com/v1/"; // Gemini API 的基础 URL
        private static Retrofit retrofit;
    
        public static Retrofit getClient() {
         
            if (retrofit == null) {
         
                retrofit = new Retrofit.Builder()
                        .baseUrl(BASE_URL) // 设置基础 URL
                        .addConverterFactory(GsonConverterFactory.create()) // 添加 Gson 转换器
                        .build();
            }
            return retrofit;
        }
    }
    
    • BASE_URL 定义 Gemini API 的基础 URL。
    • Retrofit.Builder() 创建 Retrofit 客户端的构建器。
    • baseUrl() 设置请求的基础 URL。
    • addConverterFactory() 添加 Gson 转换器,用于将 JSON 数据转换为 Java 对象。
    • build() 构建 Retrofit 客户端。

3. Gemini API 接口定义

目的: 定义一个 Java 接口,用于描述与 Gemini API 交互的方法。

步骤:

  1. 创建 GeminiApiService.java 文件:com.example.geminiapi_demo2 包下创建一个名为 GeminiApiService.java 的 Java 接口文件。

  2. 添加代码: 将以下代码添加到 GeminiApiService.java 文件中:

    package com.example.geminiapi_demo2;
    
    import com.example.geminiapi_demo2.models.GenerateContentRequest;
    import com.example.geminiapi_demo2.models.GenerateContentResponse;
    import retrofit2.Call;
    import retrofit2.http.Body;
    import retrofit2.http.Headers;
    import retrofit2.http.POST;
    import retrofit2.http.Path;
    
    public interface GeminiApiService {
         
        @Headers({
         
                "Content-Type: application/json", // 设置请求头,指定内容类型为 JSON
                "x-goog-api-key: YOUR_API_KEY" // 设置请求头,添加 API 密钥
        })
        @POST("models/{model}:generateContent") // 定义 POST 请求的 URL
        Call<GenerateContentResponse> generateContent(@Path("model") String model, @Body GenerateContentRequest request); // 定义请求方法
    }
    
    • @Headers 用于设置请求头。
      • Content-Type: application/json:指定请求体的内容类型为 JSON。
      • x-goog-api-key: YOUR_API_KEY:添加 API 密钥,用于身份验证。请将 YOUR_API_KEY 替换为你实际的 API 密钥。
    • @POST 指定请求方法为 POST,并定义请求的 URL。
    • @Path 用于替换 URL 中的占位符 {model}
    • @Body 用于指定请求体,这里使用 GenerateContentRequest 对象作为请求体。
    • Call<GenerateContentResponse> 定义请求方法的返回类型,使用 Retrofit 的 Call 对象,并指定响应类型为 GenerateContentResponse

4. Gemini API密钥获取

目的: 获取Gemini API的密钥以连接至Gemini

步骤:

  1. 准备一个谷歌账号,已经有了请跳过。

  2. 建议使用美国节点访问。

  3. 打开Google AI Studio 申请api的网址https://makersuite.google.com/app/apikey

  4. 点击左边菜单里的 Get API key,然后在右边点击创建API密钥,这样就可以得到你的API密钥了
    在这里插入图片描述

5. 数据模型创建

目的: 创建 Java 类,用于映射 Gemini API 的请求和响应数据。

步骤:

  1. 创建 models 包:com.example.geminiapi_demo2 包下创建一个名为 models 的包。

  2. 创建 GenerateContentRequest.java 文件:models 包下创建一个名为 GenerateContentRequest.java 的 Java 文件,用于定义请求数据模型。

  3. 添加代码: 将以下代码添加到 GenerateContentRequest.java 文件中:

    package com.example.geminiapi_demo2.models;
    import java.util.List;
    public class GenerateContentRequest {
         
        private List<Content> contents;
    
        public GenerateContentRequest(List<Content> contents) {
         
            this.contents = contents;
        }
        public List<Content> getContents() {
         
            return contents;
        }
        public void setContents(List<Content> conte
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值