From 2ea875b6b70d870a764a8815b5afb14c5fa0ce15 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Tue, 8 Nov 2022 02:17:02 +0100 Subject: Dodata aktivnost za fotografisanje, omogućeno čuvanje fotografija. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/src/main/AndroidManifest.xml | 31 ++++-- .../brzodolokacije/Activities/ActivityAddPost.kt | 40 +++++++- .../Activities/ActivityCapturePost.kt | 101 +++++++++++++++++++ .../Activities/NavigationActivity.kt | 15 ++- .../brzodolokacije/Fragments/FragmentShowPosts.kt | 1 + .../app/src/main/res/layout/activity_add_post.xml | 109 ++++++++++++++------- .../src/main/res/layout/activity_capture_post.xml | 82 ++++++++++++++++ .../app/src/main/res/xml/file_paths.xml | 6 ++ 8 files changed, 339 insertions(+), 46 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/res/xml/file_paths.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index b533126..0e76583 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + @@ -9,6 +10,11 @@ + + + + + - - + + + + @@ -45,10 +57,7 @@ - - - + @@ -56,6 +65,16 @@ android:name="android.app.lib_name" android:value="" /> + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt index ce18f16..b1947f0 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.content.pm.PackageManager import android.database.Cursor import android.graphics.BitmapFactory +import android.graphics.Color import android.net.Uri import androidx.appcompat.app.AppCompatActivity import android.os.Bundle @@ -14,6 +15,7 @@ import android.provider.MediaStore.Audio.Media import android.view.View import android.view.ViewGroup import android.widget.* +import androidx.constraintlayout.motion.widget.TransitionBuilder.validate import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import com.example.brzodolokacije.Models.PostImage @@ -28,6 +30,12 @@ class ActivityAddPost : AppCompatActivity() { private lateinit var showPreviousImage:Button private lateinit var switcher: ImageSwitcher private var uploadedImages:ArrayList?=null + + 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 var paths :ArrayList?=null private var place=0; override fun onCreate(savedInstanceState: Bundle?) { @@ -40,11 +48,14 @@ class ActivityAddPost : AppCompatActivity() { //paths= ArrayList() - uploadFromGallery=findViewById(R.id.btnActivityAddPostUploadImages) as Button - takePhoto=findViewById(R.id.btnActivityAddPosTakeImage) as Button + uploadFromGallery=findViewById(R.id.btnActivityAddPostUploadFromGallery) as Button showNextImage=findViewById(R.id.nextImage) as Button showPreviousImage=findViewById(R.id.previousImage) as Button - switcher=findViewById(R.id.switcher) as ImageSwitcher + switcher=findViewById(R.id.isActivityAddPostSwitcher) as ImageSwitcher + location=findViewById(R.id.etActivityAddPostLocation) as EditText + description=findViewById(R.id.etActivityAddPostDescription) as EditText + post=findViewById(R.id.btnActivityAddPostPost) as Button + switcher?.setFactory{ val imgView = ImageView(applicationContext) @@ -102,6 +113,10 @@ class ActivityAddPost : AppCompatActivity() { } } + post.setOnClickListener{ + validate() + } + } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { @@ -133,8 +148,27 @@ class ActivityAddPost : AppCompatActivity() { } } + private fun validate(){ + locationString=location.text.toString().trim() + descriptionString=description.text.toString().trim() + //prazan unos? + if(locationString.isEmpty()) { + location.hint="Unesite lokaciju" + location.setHintTextColor(Color.RED) + } + if(descriptionString.isEmpty()) { + description.hint="Unesite lokaciju" + description.setHintTextColor(Color.RED) + } + + if(!locationString.isEmpty() && !descriptionString.isEmpty()){ + addToDatabase() + } + } + private fun addToDatabase(){ + } /* private fun showImportedImages(){ var cols= listOf(MediaStore.Images.Thumbnails.DATA).toTypedArray() 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 8d639a8..f0b9c76 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 @@ -1,11 +1,112 @@ package com.example.brzodolokacije.Activities +import android.Manifest +import android.app.Activity +import android.content.Intent +import android.content.pm.PackageManager +import android.graphics.Bitmap +import android.net.Uri import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.os.Environment +import android.provider.MediaStore +import android.view.View +import android.widget.Button +import android.widget.EditText +import android.widget.ImageView +import android.widget.Toast +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 class ActivityCapturePost : AppCompatActivity() { + + 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?=null + private lateinit var photoPath:String override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_capture_post) + + //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) + } + //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.READ_EXTERNAL_STORAGE),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.READ_EXTERNAL_STORAGE),101) + } + + location=findViewById(R.id.etActivityCapturePostLocation) as EditText + description=findViewById(R.id.etActivityCapturePostDescription) as EditText + post=findViewById(R.id.btnActivityCapturePostPost) as Button + showImage=findViewById(R.id.ivActivityCapturePostImage) as ImageView + takePhoto=findViewById(R.id.btnActivityCapturePostCapture) as Button + + //dodavanje sa kamere + takePhoto.setOnClickListener { + val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) + Toast.makeText( + applicationContext, "take photo is working", Toast.LENGTH_LONG + ).show(); + if(cameraIntent.resolveActivity(packageManager)!=null){ + var photoFile: File?=null + try { + Toast.makeText( + applicationContext, "try", Toast.LENGTH_LONG + ).show(); + val fileName="IMG" + val destStorageDir=getExternalFilesDir(Environment.DIRECTORY_PICTURES) + val photo=File.createTempFile(fileName,".jpg",destStorageDir) + photoPath=photo.absolutePath + photoFile=photo + Toast.makeText( + applicationContext, "photoFile generisano", Toast.LENGTH_LONG + ).show(); + }catch (e:IOException){Toast.makeText( + applicationContext, "greska", Toast.LENGTH_LONG + ).show();} + + if(photoFile!=null){ + val _uri=FileProvider.getUriForFile(this,"com.example.android.fileprovider",photoFile) + cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,_uri) + startActivityForResult(cameraIntent,1) + } + + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == Activity.RESULT_OK && requestCode == 1 && data != null){ + Toast.makeText( + applicationContext, "camera intent", Toast.LENGTH_LONG + ).show(); + + showImage.setImageURI(Uri.parse(photoPath)) + + + /*var photo:Bitmap=data.extras!!.get("data") as Bitmap + showImage.setImageBitmap(photo)*/ + } } } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt index 89d6c19..1701e85 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt @@ -26,10 +26,11 @@ class NavigationActivity : AppCompatActivity() { val addPostFragment= FragmentAddNew() val profileFragment=FragmentProfile() val bottomNav=findViewById(R.id.bottomNavigationView) as BottomNavigationView - setCurrentFragment(fragmentShowPosts) + //setCurrentFragment(fragmentShowPosts) + setCurrentFragment(browseFragment) bottomNav.setOnNavigationItemSelectedListener { when(it.itemId){ - R.id.navHome->setCurrentFragment(fragmentShowPosts) + // R.id.navHome->setCurrentFragment(fragmentShowPosts) //R.id.navAddPost->setCurrentFragment(addPostFragment) R.id.navAddPost->showBottomSheetAddNew() R.id.navBrowse->setCurrentFragment(browseFragment) @@ -60,12 +61,20 @@ class NavigationActivity : AppCompatActivity() { openAddPost.setOnClickListener{ Toast.makeText( - applicationContext, "Open ", Toast.LENGTH_LONG + applicationContext, "Open select from gallery ", Toast.LENGTH_LONG ).show(); val intent = Intent (this, ActivityAddPost::class.java) startActivity(intent) } + capturePost.setOnClickListener{ + Toast.makeText( + applicationContext, "Open capture ", Toast.LENGTH_LONG + ).show(); + val intent = Intent (this, ActivityCapturePost::class.java) + startActivity(intent) + } + } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index 9a0eedc..9fc0754 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -36,6 +36,7 @@ class FragmentShowPosts : Fragment() { super.onCreate(savedInstanceState) //load data for the list loadData() + Log.d("main","greska") //instantiate adapter and linearLayout val postApi= RetrofitHelper.getInstance() val token=SharedPreferencesHelper.getValue("jwt", requireActivity()) diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml index 5727fb1..25c14b4 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml @@ -6,30 +6,13 @@ android:layout_height="match_parent" tools:context=".Activities.ActivityAddPost"> -