十分钟教你搭建ChatGPT 图片生成的安卓应用

article/2024/9/19 8:53:17

十分钟教你搭建ChatGPT 图片生成的安卓应用

大家好,我是易安!

今天,我们将集成 OpenAI API (ChatGPT)来构建一个简单的类似 ChatGPT 的 android 应用程序,让它返回我们想要的图片,本文是上一篇的姊妹篇。

alt

详细步骤

第 1 步:在 Android Studio 中创建一个新项目

首先在 Android Studio 中创建新项目,选择 Kotlin 编程。

第 2 步:在 build.gradle 文件中添加以下依赖项

下面是 Volley 的依赖项,我们将使用它从 API 获取数据。要添加此依赖项,请导航至 app > Gradle Scripts > build.gradle(app) 并在 dependencies 部分添加以下依赖项。我们使用 Picasso 依赖项从 URL 加载图像。

// 下面一行用于 volley 库和 picasso
实现 'com.android.volley:volley:1.2.0'
实现 'com.squareup.picasso:picasso:2.8'

添加此依赖项后,同步您的项目,然后转到 AndroidManifest.xml 部分。

第三步:在AndroidManifest.xml文件中添加上网权限

导航到应用 > AndroidManifest.xml 并向其中添加以下代码。

<!-- 互联网权限 -->
<uses-permission android:name="android.permission.INTERNET"/>

第 4 步:使用 activity_main.xml 文件

导航到 app > res > layout > activity_main.xml 并将以下代码添加到该文件。下面是 activity_main.xml 文件的代码。

  • XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@color/back_color"
 tools:context=".MainActivity">

 <ScrollView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_above="@id/idTILQuery"
  android:layout_alignParentTop="true"
  android:layout_margin="5dp"
  android:padding="5dp">

  <LinearLayout
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical">

   <!-- text view for displaying question-->
   <TextView
    android:id="@+id/idTVQuestion"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="30dp"
    android:padding="4dp"
    android:text="Question"
    android:textAlignment="center"
    android:textColor="@color/white"
    android:textSize="17sp" />

   <!-- Image view for displaying response-->
   <ImageView
    android:id="@+id/idIVImage"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_margin="10dp" />

  </LinearLayout>

 </ScrollView>
 <!-- text field for asking question-->
 <com.google.android.material.textfield.TextInputLayout
  android:id="@+id/idTILQuery"
  style="@style/TextInputLayoutStyle"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  android:layout_margin="5dp"
  android:hint="Enter your query to generate image"
  android:padding="5dp"
  android:textColorHint="@color/white"
  app:hintTextColor="@color/white">

  <com.google.android.material.textfield.TextInputEditText
   android:id="@+id/idEdtQuery"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="@color/edt_back_color"
   android:drawableEnd="@drawable/ic_send"
   android:drawableTint="@color/white"
   android:ems="10"
   android:imeOptions="actionSend"
   android:importantForAutofill="no"
   android:inputType="textEmailAddress"
   android:textColor="@color/white"
   android:textColorHint="@color/white"
   android:textSize="14sp" />
 </com.google.android.material.textfield.TextInputLayout>
</RelativeLayout>

第 5 步:生成使用 API 的不记名令牌。

导航到以下URL,只需获取open ai的api key即可。在此屏幕上单击创建新密钥以生成新密钥。

第 6 步:使用 MainActivity.kt 文件。

导航到 app > java > 你的应用程序包名称 > MainActivity.kt 文件并向其中添加以下代码。

  • Kotlin
import android.R.attr
import android.annotation.SuppressLint
import android.app.StatusBarManager
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.drawable.Icon
import android.net.Uri
import android.net.wifi.WifiManager
import android.os.Build
import android.os.Bundle
import android.provider.MediaStore
import android.util.Log
import android.view.inputmethod.EditorInfo
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import com.android.volley.RequestQueue
import com.android.volley.Response
import com.android.volley.RetryPolicy
import com.android.volley.VolleyError
import com.android.volley.toolbox.JsonObjectRequest
import com.android.volley.toolbox.Volley
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.textfield.TextInputEditText
import com.squareup.picasso.Picasso
import org.json.JSONObject
import java.util.jar.Manifest

class MainActivity : AppCompatActivity() {

 
 lateinit var imageIV: ImageView
 lateinit var questionTV: TextView
 lateinit var queryEdt: TextInputEditText
 var url = "https://api.openai.com/v1/images/generations"

 override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_main)

  
  imageIV = findViewById(R.id.idIVImage)
  questionTV = findViewById(R.id.idTVQuestion)
  queryEdt = findViewById(R.id.idEdtQuery)

  
  queryEdt.setOnEditorActionListener(TextView.OnEditorActionListener { v, actionId, event ->
   if (actionId == EditorInfo.IME_ACTION_SEND) {
    
    if (queryEdt.text.toString().length > 0) {
     // calling get response to get the response.
     getResponse(queryEdt.text.toString())
    } else {
     Toast.makeText(this, "Please enter your query..", Toast.LENGTH_SHORT).show()
    }
    return@OnEditorActionListener true
   }
   false
  })
 }

 private fun getResponse(query: String) {
  
  questionTV.text = query
  queryEdt.setText("")
  
  val queue: RequestQueue = Volley.newRequestQueue(applicationContext)
  
  val jsonObject: JSONObject? = JSONObject()
  
  jsonObject?.put("prompt", query)
  jsonObject?.put("n", 1)
  jsonObject?.put("size""256x256")

  
  val postRequest: JsonObjectRequest =
   
   object : JsonObjectRequest(Method.POST, url, jsonObject,
    Response.Listener { response ->
     
     var imageURL: String =
      response.getJSONArray("data").getJSONObject(0).getString("url")
     imageURL = imageURL.replace("\\""");
     
     Picasso.get().load(imageURL).into(imageIV)
    },
    
    Response.ErrorListener { error ->
     Log.e("TAGAPI""Error is : " + error.message + "\n" + error)
    }) {
    override fun getHeaders(): kotlin.collections.MutableMap<kotlin.String, kotlin.String> {
     val params: MutableMap<String, String> = HashMap()
     
     params["Content-Type"] = "application/json"
     params["Authorization"] =
      "Bearer Enter your key"
     return params;
    }
   }
  
  postRequest.setRetryPolicy(object : RetryPolicy {
   override fun getCurrentTimeout(): Int {
    return 50000
   }

   override fun getCurrentRetryCount(): Int {
    return 50000
   }

   @Throws(VolleyError::class)
   override fun retry(error: VolleyError) {
   }
  })
  
  queue.add(postRequest)
 }
}

演示效果

alt

本文由 mdnice 多平台发布


http://chatgpt.dhexx.cn/article/9hSf0X07.shtml

相关文章

[chatGPT] 如何通过JNI在Android上显示实时视频流

目录 背景正文layout xmljavaCjava 总结一&#xff1a; 追问&#xff1a;CC 总结二&#xff1a;答疑解惑C 画蛇添足 视频不显示黑屏 最后感叹科技的更新速度&#xff0c;真的程序员都可能会被替代&#xff0c;下一个时代最大的问题应该是劳动力过剩&#xff0c;导致社会性结构改…

使用Chat gpt提高Android开发效率

简介 在过去几周里&#xff0c;我进行了一项令人大开眼界的实验&#xff0c;将 Chat-GPT&#xff08;我使用的是 Bing Chat&#xff0c;它在后台使用了 GPT-4&#xff0c;并且可以免费使用&#xff09;融入到我的日常 Android 开发工作流程中&#xff0c;以探索它是否能够提高…

chatgpt赋能python:Python如何打包安卓程序?

Python如何打包安卓程序&#xff1f; Python 是一种高级编程语言&#xff0c;具有简单易学、代码简洁、易于阅读等特点&#xff0c;因此在开发中广受欢迎。而随着移动设备的普及&#xff0c;Python 开发者们也开始着手开发安卓应用程序。那么&#xff0c;在 Python 中如何打包…

通过ChatGPT跟MetaHuman对话,Android/iOS兼容

一、申请ChatGPT的API-KEY 1.通过 openAI官网申请API-KEY 2.参考使用腾讯云函数一分钟搭建 OpenAI 免翻墙代理搭建openAI免翻墙代理 3.通过Postman测试一下openAI函数是否可被调用,传入BearerToken和Body参数,ChatGPT即可返回应答数据 二、启用必要的插件 1.启用文字转语…

试看ChatGPT如何带你通关蔚来Android车载面试

近期ChatGPT&#xff0c;火了。火到什么程度&#xff1f;根据瑞士银行巨头瑞银集团的一份报告显示&#xff0c;在ChatGPT推出仅2个月后&#xff0c;它在2023年1月末的月活用户已经突破了1亿。 那么ChatGPT是什么&#xff1f; 借用百度介绍下&#xff0c;ChatGPT&#xff0c;美…

【Android-ChatGPT】安装Android Studio遇到Unable to access Android SDK add-on list的错误【亲测解决】

【问题】 安装Android Studio遇到Unable to access Android SDK add-on list的错误。 【解决方案】 这个一般是没有设置代理造成的&#xff0c;点击setup proxy进行代理设置。 点击Android Studio - Preferences&#xff0c;在 Appearance & Behavior的System Settings下…

鸿蒙到底是不是安卓? ChatGPT的回答令人惊讶!

因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号&#xff0c;领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇&#xff1a;ChatGPT研究框架&#xff08;80页PPT&#xff0c;附下载&#xff09;…

基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux

2023年目前要说最热的点&#xff0c;肯定是ChatGPT了。 ChatGPT官方提供的网页版本&#xff0c;还有需要科学上网&#xff0c;很多人都会基于此进行封装。 现在是移动互联网时代&#xff0c;基于手机APP的需求还是很大的。 所以&#xff0c;今天给大家推荐一个ChatGPT客户端…

用ChatGPT提高开发效率(Andoid)

一、前言 我们问了10个问题&#xff0c;开发的、生活中有疑问的&#xff0c;ChartGPT都给了我们答案。这些答案怎么样&#xff0c;请往下看吧。 ChatGPT-1、写一个车牌号的正则表达式ChatGPT-2、写一个中国大陆车牌号的正则表达式ChatGPT-3、用kotlin写一个车牌号的校验函数C…

奇思妙想,用ChatGPT写代码怎么样呢?来看看写一个简单的Android apk

前言 这段时间重大新闻就属ChatGPT了&#xff0c;这到底是个什么呢&#xff1f;官方解释 ChatGPT是美国人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具&#xff0c;使用了Transformer神经网络架构&#xff0c;也是GPT-3.5架构&#xff0c;这是一种…

十分钟教你搭建类似ChatGPT的安卓应用程序

大家好&#xff0c;我是易安&#xff01; Chat GPT 是当今著名的人工智能工具&#xff0c;就像聊天机器人一样。Chat GPT会回答发送给它的所有查询。今天&#xff0c;我将通过集成 OpenAI API (ChatGPT)构建一个简单的类似 ChatGPT 的 android 应用程序&#xff0c;我们可以在其…

使用 ChatGPT 改善 Android 开发效率的 7 个案例~

翻译 修改自 https://proandroiddev.com/chatgpt-for-android-developers-1c3c1ecc6440&#xff0c;原作者&#xff1a;Rafa Araujo ChatGPT 是由 OpenAI 公司创造的自然语言处理工具&#xff0c;对那些想要提高技能的软件开发人员来说&#xff0c;它绝对是不容错过的重要利器…

一款好用的ChatGPT工具,安卓app

要找到一款真正好用的chatgpt工具是不容易的&#xff0c;要么注册付费很麻烦&#xff0c;要么很快就不能用了&#xff0c;要么还不是真正的chatgpt。 这款解决以上所有问题。 你似乎来到了没有知识存在的荒原 - 知乎知乎&#xff0c;中文互联网高质量的问答社区和创作者聚集的…

ChatGPT能帮Android开发者干些啥?

ChatGPT能帮Android开发者干些啥&#xff1f; ChatGPT 是 OpenAI 创建的一种自然语言工具&#xff0c;本文将展示一些使用 ChatGPT 帮助软件开发的实际示例。凭借其易用性和自定义功能&#xff0c;ChatGPT 可以为提高软件工程师的绩效做出贡献。 访问 ChatGPT 转到https://ch…

使用 ChatGPT 改善 Android 开发效率的 7 个案例

ChatGPT 是由 OpenAI 公司创造的自然语言处理工具&#xff0c;对那些想要提高技能的软件开发人员来说&#xff0c;它绝对是不容错过的重要利器。 本文将展示使用 ChatGPT 来促进 Android 软件开发的 7 个案例&#xff0c;你会发现凭借其易用性和定制功能&#xff0c;ChatGPT 能…

ChatGpt与AndroidStudio合体变身教程,从此ChatGPT成为你的私人助理

chatGpt火了这么长时间了&#xff0c;大家肯定都有所了解&#xff0c;今天我就给大家分享一下&#xff0c;如何让chatgpt与AndroidStudio成功合体&#xff0c;变身成为我们的私人助理&#xff01;&#xff08;记得给鄙人点点关注哦&#xff09; 合体进行中 合体步骤下载插件重…

Android Studio类ChatGpt的免费AI编程助手

ChatGpt大火&#xff0c;带动了AI工具的发展&#xff0c;介绍两款免费的AI编程助手&#xff0c;一款用于输入关键字自动输出代码&#xff0c;一款则是自动补全提示&#xff0e; 可支持大部分代码编辑器&#xff0c;这里主要介绍Android Studio上安装使用&#xff0e; Bito 支…

制作自己的ChatGPT

Feb 11, 20235 min read 推荐&#xff1a;使用 NSDT场景设计器 快速搭建 3D场景。 众所周知&#xff0c;ChatGPT 目前能够取得令人印象深刻的壮举。 很可能许多人都有在他们自己的项目中使用该技术的想法。 不过需要注意的是&#xff0c;ChatGPT 目前并没有官方的 API。 使用非…

ChatGPT的各种骚操作

ChatGPT&#xff0c;美国“开放人工智能研究中心”研发的聊天机器人程序 [12] &#xff0c;于2022年11月30日发布 [2-3]。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xf…

借助ChatGPT实现 PPT | 导图 | 短视频文案生成【AIGC】

文章目录 1、chatgpt 自动制作 PPT2、chatgpt 生成 Excel 公式3、chatgpt 生成思维导图4、chatgpt 快速生成短视频5、总结 1、chatgpt 自动制作 PPT 步骤如下&#xff1a; ①要求 chatgpt 生成 PPT 内容&#xff0c;以 markdown 格式输出&#xff1b; ②借助网站 mindshow.fun…