I was trying to use canhub image cropper for my project and was following the github documentation but I am not able to implement it properly and am getting confused. So, if anyone can help in this.
package com.example.googleassistantclone.functions
import android.Manifest
import android.content.ContentValues
import android.content.DialogInterface
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.provider.MediaStore
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.Toast
import androidx.appcompat.app.ActionBar
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.example.googleassistantclone.R
class GoogleLensActivity : AppCompatActivity() {
private val CAMERA_REQUEST_PERMISSION = 200
private val STORAGE_REQUEST_PERMISSION = 400
private val IMAGE_PICK_GALLERY_REQUEST_PERMISSION = 1000
private val IMAGE_PICK_CAMERA_REQUEST_PERMISSION = 200
private lateinit var cameraPermissions: Array<String>
private lateinit var storagePermission: Array<String>
private lateinit var mResulted: EditText
private lateinit var mPreviewIm: ImageView
private lateinit var search: Button
private var imageUri: Uri? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_google_lens)
val actionBar: ActionBar? = supportActionBar
actionBar?.subtitle = "Insert or Click Pictures"
mPreviewIm = findViewById(R.id.image_preview)
mResulted = findViewById(R.id.result_edit_text)
search = findViewById(R.id.search_button)
cameraPermissions = arrayOf(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
storagePermission = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)
search.setOnClickListener {
val texttoSearch = mResulted.text.toString()
if (texttoSearch.isNotEmpty()) {
val uri = Uri.parse("https://www.google.com/search?q=$texttoSearch")
val gSearchIntent = Intent(Intent.ACTION_VIEW, uri)
startActivity(gSearchIntent)
} else {
Toast.makeText(this@GoogleLensActivity, "Add an Image with text", Toast.LENGTH_SHORT).show()
}
}
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.addimgbtn -> {
showImageInputDialog()
true
}
else -> super.onOptionsItemSelected(item)
}
}
private fun showImageInputDialog() {
val items = arrayOf("Camera", "Gallery")
val dialog = AlertDialog.Builder(this)
dialog.setTitle("SET IMAGE")
dialog.setItems(items) { _, which ->
when (which) {
0 -> {
if (!checkCameraPermission()) {
requestCameraPermission()
} else {
pickCamera()
}
}
1 -> {
if (!checkStoragePermission()) {
requestStoragePermission()
} else {
pickGallery()
}
}
}
}
dialog.create().show()
}
private fun pickGallery() {
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
startActivityForResult(intent, IMAGE_PICK_GALLERY_REQUEST_PERMISSION)
}
private fun requestStoragePermission() {
ActivityCompat.requestPermissions(this, storagePermission, STORAGE_REQUEST_PERMISSION)
}
private fun checkStoragePermission(): Boolean {
return ContextCompat.checkSelfPermission(
this,
Manifest.permission.WRITE_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED
}
private fun pickCamera() {
val contentValues = ContentValues()
contentValues.put(MediaStore.Images.Media.TITLE, "New Pic")
contentValues.put(MediaStore.Images.Media.DESCRIPTION, "Text")
imageUri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
val cameraImage = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
cameraImage.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)
startActivityForResult(cameraImage, IMAGE_PICK_CAMERA_REQUEST_PERMISSION)
}
private fun requestCameraPermission() {
ActivityCompat.requestPermissions(this, cameraPermissions, CAMERA_REQUEST_PERMISSION)
}
private fun checkCameraPermission(): Boolean {
val resultCamera = ContextCompat.checkSelfPermission(
this,
Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED
val resultStorage = ContextCompat.checkSelfPermission(
this,
Manifest.permission.WRITE_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED
return resultCamera && resultStorage
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
when (requestCode) {
CAMERA_REQUEST_PERMISSION -> {
if (grantResults.isNotEmpty()) {
val cameraAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED
val writeStorageAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED
if (cameraAccepted && writeStorageAccepted) {
pickCamera()
} else {
Toast.makeText(this, "Permission is Denied", Toast.LENGTH_SHORT).show()
}
}
}
STORAGE_REQUEST_PERMISSION -> {
if (grantResults.isNotEmpty()) {
val writeStorageAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED
if (writeStorageAccepted) {
pickGallery()
} else {
Toast.makeText(this, "Permission is Denied", Toast.LENGTH_SHORT).show()
}
}
}
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == RESULT_OK) {
if (requestCode == IMAGE_PICK_GALLERY_REQUEST_PERMISSION) {
}
}
}
}
enter image description here I was trying this method but when I used setCropImage() method it was not recognised by the file, them I tried creating a new class by but it didn't helped too. I have added all the dependency and updated the manifest file as well.