2 Commits
dev ... crop

Author SHA1 Message Date
prisar
c2078d91dd binding 2023-07-07 17:13:18 +05:30
prisar
b9a669e5e5 crop 2023-07-07 10:53:38 +05:30
7 changed files with 70 additions and 14 deletions

3
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,3 @@
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK" />
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@@ -96,5 +96,6 @@ dependencies {
// Barcode scanner // Barcode scanner
implementation 'com.journeyapps:zxing-android-embedded:4.3.0' implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
// cropping
implementation 'com.github.yalantis:ucrop:2.2.6'
} }

View File

@@ -18,4 +18,9 @@
# If you keep the line number information, uncomment this to # If you keep the line number information, uncomment this to
# hide the original source file name. # hide the original source file name.
#-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile
# ucrop
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }

View File

@@ -42,6 +42,11 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
</application> </application>
</manifest> </manifest>

View File

@@ -2,13 +2,13 @@ package com.example.hposregistration.ui.fragments.registration
import android.Manifest import android.Manifest
import android.app.Activity import android.app.Activity
import android.app.Activity.RESULT_OK
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.graphics.Bitmap import android.graphics.Bitmap
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.MediaStore import android.provider.MediaStore
import androidx.fragment.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@@ -16,12 +16,14 @@ import android.widget.ImageView
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.example.hposregistration.data.user.UserData import com.example.hposregistration.data.user.UserData
import com.example.hposregistration.ui.viewmodels.RegistrationViewModel import com.example.hposregistration.ui.viewmodels.RegistrationViewModel
import com.yalantis.ucrop.UCrop
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import `in`.sminnovations.hposregistration.databinding.FragmentCaptureUserImageBinding import `in`.sminnovations.hposregistration.databinding.FragmentCaptureUserImageBinding
import java.io.File import java.io.File
@@ -82,7 +84,7 @@ class CaptureUserImageFragment : Fragment() {
private fun setupCameraLauncher() { private fun setupCameraLauncher() {
cameraLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> cameraLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK && result.data != null) { if (result.resultCode == RESULT_OK && result.data != null) {
val thumbnail: Bitmap = result.data!!.extras!!.get("data") as Bitmap val thumbnail: Bitmap = result.data!!.extras!!.get("data") as Bitmap
val uri: Uri = saveImageToInternalStorage(thumbnail) val uri: Uri = saveImageToInternalStorage(thumbnail)
uri.let { uri.let {
@@ -122,9 +124,42 @@ class CaptureUserImageFragment : Fragment() {
} }
private fun submitImage(uri: Uri) { private fun submitImage(uri: Uri) {
userData.userImage = uri.toString()
viewModel.insert(userData) val cropLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
navigate() if (result.resultCode == RESULT_OK && result.data != null) {
val resultUri: Uri? = UCrop.getOutput(result.data!!)
binding.userImage.loadImageFromUri(Uri.parse(resultUri.toString()))
} else if (result.resultCode == UCrop.RESULT_ERROR) {
val cropError: Throwable? = UCrop.getError(result.data!!)
}
}
// val cropIntent: Intent = // Create your crop intent here
// cropLauncher.launch(cropIntent)
// userData.userImage = uri.toString()
// viewModel.insert(userData)
// navigate()
var sourceUri = uri
var destinationUri = uri
val maxWidth = 160
val maxHeight = 90
// val context = getContext().getA
UCrop.of(sourceUri, destinationUri)
.withAspectRatio(9F, 16F)
.withMaxResultSize(maxWidth, maxHeight)
.start(requireActivity())
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK && requestCode == UCrop.REQUEST_CROP) {
val resultUri: Uri? = data?.let { UCrop.getOutput(it) }
binding.userImage.loadImageFromUri(Uri.parse(resultUri.toString()))
} else if (resultCode == UCrop.RESULT_ERROR) {
val cropError: Throwable? = data?.let { UCrop.getError(it) }
}
} }
private fun navigate() { private fun navigate() {
@@ -177,14 +212,14 @@ class CaptureUserImageFragment : Fragment() {
requestPermissionLauncher.launch(permissions) requestPermissionLauncher.launch(permissions)
} }
private fun ImageView.loadImageFromUri(uri: Uri) {
Glide.with(this)
.load(uri)
.into(this)
}
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
_binding = null _binding = null
} }
} }
private fun ImageView.loadImageFromUri(uri: Uri) {
Glide.with(this)
.load(uri)
.into(this)
}

View File

@@ -10,6 +10,7 @@ dependencyResolutionManagement {
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
maven {url "https://jitpack.io"}
} }
} }
rootProject.name = "HPOS Registration" rootProject.name = "HPOS Registration"