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
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
) {
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)
}
}