diff options
author | TAMARA JERINIC <tamara.jerinic@gmail.com> | 2022-11-11 03:55:53 +0100 |
---|---|---|
committer | TAMARA JERINIC <tamara.jerinic@gmail.com> | 2022-11-11 03:56:42 +0100 |
commit | da309069093cfc64f489ceac5f17b785d48535d0 (patch) | |
tree | 7ddec8e553aceab808db55efe9ed2fd0a9884b32 | |
parent | 1a2743483c374dd3829f0e3e47119b492e086e5e (diff) |
Omogućeno fotografisanje, prikaz fotografije i čuvanje na uređaju.
-rw-r--r-- | Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt | 179 |
1 files changed, 90 insertions, 89 deletions
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt index 951ccf5..1eb9916 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt @@ -7,143 +7,144 @@ import android.content.pm.PackageManager import android.graphics.Bitmap import android.graphics.Color import android.net.Uri -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Environment -import android.os.Environment.getExternalStoragePublicDirectory import android.provider.MediaStore +import android.util.Log import android.view.View import android.widget.Button import android.widget.EditText import android.widget.ImageView import android.widget.Toast +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.core.content.FileProvider import com.example.brzodolokacije.R -import kotlinx.android.synthetic.main.fragment_profile.* import java.io.File -import java.io.IOException import java.text.SimpleDateFormat import java.util.* -import kotlin.collections.ArrayList + class ActivityCapturePost : AppCompatActivity() { - lateinit var currentPhotoPath: String + private lateinit var takePhoto: Button private lateinit var location: EditText private lateinit var description: EditText - private lateinit var locationString:String - private lateinit var descriptionString:String - private lateinit var post:Button - private lateinit var showImage:ImageView - private var uploadedImages:ArrayList<Uri?>?=null - private lateinit var photoPath:String - private lateinit var photoURI:Uri - - @Throws(IOException::class) - private fun createImageFile(): File { - val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date()) - val storageDir: File? = getExternalFilesDir(Environment.DIRECTORY_PICTURES) - return File.createTempFile( - "JPEG_${timeStamp}_", /* prefix */ - ".jpg", /* suffix */ - storageDir /* directory */ - ).apply { - currentPhotoPath = absolutePath - } - } + private lateinit var locationString: String + private lateinit var descriptionString: String + private lateinit var post: Button + private lateinit var showImage: ImageView + private var uploadedImages: ArrayList<Uri?>? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_capture_post) + location = findViewById<View>(R.id.etActivityCapturePostLocation) as EditText + description = findViewById<View>(R.id.etActivityCapturePostDescription) as EditText + post = findViewById<View>(R.id.btnActivityCapturePostPost) as Button + showImage = findViewById<View>(R.id.ivActivityCapturePostImage) as ImageView + takePhoto = findViewById<View>(R.id.btnActivityCapturePostCapture) as Button + + //dodavanje sa kamere + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //provera da li je odobrena upotreba skladista - if(ContextCompat.checkSelfPermission(this@ActivityCapturePost, Manifest.permission.READ_EXTERNAL_STORAGE) - != PackageManager.PERMISSION_GRANTED){ - ActivityCompat.requestPermissions(this@ActivityCapturePost, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),101) + if (ContextCompat.checkSelfPermission( + this@ActivityCapturePost, + Manifest.permission.READ_EXTERNAL_STORAGE + ) + != PackageManager.PERMISSION_GRANTED + ) { + ActivityCompat.requestPermissions( + this@ActivityCapturePost, + arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), + 101 + ) } //provera da li je odobrena upotreba kamere - if(ContextCompat.checkSelfPermission(this@ActivityCapturePost, Manifest.permission.CAMERA) - != PackageManager.PERMISSION_GRANTED){ - ActivityCompat.requestPermissions(this@ActivityCapturePost, arrayOf(Manifest.permission.CAMERA),101) + if (ContextCompat.checkSelfPermission( + this@ActivityCapturePost, + Manifest.permission.CAMERA + ) + != PackageManager.PERMISSION_GRANTED + ) { + ActivityCompat.requestPermissions( + this@ActivityCapturePost, + arrayOf(Manifest.permission.CAMERA), + 101 + ) } //provera da li je odobren upis u skladiste - if(ContextCompat.checkSelfPermission(this@ActivityCapturePost, Manifest.permission.WRITE_EXTERNAL_STORAGE) - != PackageManager.PERMISSION_GRANTED){ - ActivityCompat.requestPermissions(this@ActivityCapturePost, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),101) + if (ContextCompat.checkSelfPermission( + this@ActivityCapturePost, + Manifest.permission.WRITE_EXTERNAL_STORAGE + ) + != PackageManager.PERMISSION_GRANTED + ) { + ActivityCompat.requestPermissions( + this@ActivityCapturePost, + arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), + 101 + ) } + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - location=findViewById<View>(R.id.etActivityCapturePostLocation) as EditText - description=findViewById<View>(R.id.etActivityCapturePostDescription) as EditText - post=findViewById<View>(R.id.btnActivityCapturePostPost) as Button - showImage=findViewById<View>(R.id.ivActivityCapturePostImage) as ImageView - takePhoto=findViewById<View>(R.id.btnActivityCapturePostCapture) as Button - - //dodavanje sa kamere takePhoto.setOnClickListener { - Toast.makeText( - applicationContext, "camera intent button", Toast.LENGTH_LONG - ).show(); - Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent -> - takePictureIntent.resolveActivity(packageManager)?.also { - val photoFile: File? = try { - createImageFile() - } catch (ex: IOException) { - null - } - photoFile?.also { - photoURI= FileProvider.getUriForFile( - this, - "com.example.android.fileprovider", - it - ) - takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI) - startActivityForResult(takePictureIntent, 123) - } - } + + val APP_TAG = "BrzoDoLokacije" + val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)/* + val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date()) + //val storageDir: File? = getExternalFilesDir(Environment.DIRECTORY_PICTURES) + //val photo= File(storageDir,"JPEG_${timeStamp}.jpg") + + val mediaStorageDir = File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), APP_TAG) + if (!mediaStorageDir.exists() && !mediaStorageDir.mkdirs()) { + Log.d(APP_TAG, "failed to create directory") } + var photoFile = File(mediaStorageDir.path + File.separator + "${APP_TAG}_${timeStamp}.jpg") + if (photoFile != null) { + val fileProvider: Uri = + FileProvider.getUriForFile(this, "com.codepath.fileprovider", photoFile!!) + intent.putExtra(MediaStore.EXTRA_OUTPUT, fileProvider) + } + */ + cameraActivityResultLauncher.launch(takePictureIntent) } - post.setOnClickListener{ - locationString=location.text.toString().trim() - descriptionString=description.text.toString().trim() + + post.setOnClickListener { + locationString = location.text.toString().trim() + descriptionString = description.text.toString().trim() //prazan unos? - if(locationString.isEmpty()) { - location.hint="Unesite lokaciju" + if (locationString.isEmpty()) { + location.hint = "Unesite lokaciju" location.setHintTextColor(Color.RED) } - if(descriptionString.isEmpty()) { - description.hint="Unesite lokaciju" + if (descriptionString.isEmpty()) { + description.hint = "Unesite lokaciju" description.setHintTextColor(Color.RED) } + } + } + private val cameraActivityResultLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode === RESULT_OK && result.data != null) { + val bundle = result.data!!.extras + val bitmap = bundle!!["data"] as Bitmap? + showImage.setImageBitmap(bitmap) + } - /*if(!locationString.isEmpty() && !descriptionString.isEmpty()){ - - //dodaj u bazu - - }*/ } } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (resultCode == Activity.RESULT_OK && requestCode == 123 && data != null){ - Toast.makeText( - applicationContext, "camera intent", Toast.LENGTH_LONG - ).show(); - showImage.setImageURI(photoURI) - Toast.makeText( - applicationContext, currentPhotoPath, Toast.LENGTH_LONG - ).show(); - /*var photo:Bitmap=data.extras!!.get("data") as Bitmap - showImage.setImageBitmap(photo)*/ - } - } -}
\ No newline at end of file + |