Skip to content

Commit 4747a6b

Browse files
committed
changes for photostat
1 parent 5ce0e5b commit 4747a6b

File tree

4 files changed

+56
-10
lines changed

4 files changed

+56
-10
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ dependencies {
3636
implementation 'androidx.core:core-ktx:1.3.1'
3737
implementation 'androidx.appcompat:appcompat:1.2.0'
3838
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
39-
implementation project(path: ':customcamera')
39+
// implementation project(path: ':customcamera')
4040
testImplementation 'junit:junit:4.12'
4141
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
4242
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
@@ -51,5 +51,5 @@ dependencies {
5151
// implementation "androidx.camera:camera-view:1.0.0-alpha16"
5252

5353
// Custom Camera
54-
// implementation 'com.github.Priyansh-Kedia:CustomCamera:1.1'
54+
implementation 'com.github.Priyansh-Kedia:CustomCamera:2.0'
5555
}

customcamera/src/main/java/com/kedia/customcamera/CCMultiple.kt

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import android.Manifest
44
import android.app.Activity
55
import android.content.Context
66
import android.content.ContextWrapper
7-
import android.content.Intent
87
import android.content.pm.PackageManager
98
import android.content.res.ColorStateList
109
import android.graphics.Bitmap
@@ -20,16 +19,22 @@ import android.view.MotionEvent
2019
import android.widget.FrameLayout
2120
import android.widget.Toast
2221
import androidx.annotation.LayoutRes
23-
import androidx.appcompat.app.AppCompatActivity
2422
import androidx.camera.core.*
2523
import androidx.camera.lifecycle.ProcessCameraProvider
2624
import androidx.core.app.ActivityCompat
2725
import androidx.core.content.ContextCompat
2826
import androidx.core.view.isVisible
29-
import androidx.lifecycle.*
27+
import androidx.fragment.app.Fragment
28+
import androidx.fragment.app.FragmentManager
29+
import androidx.lifecycle.Lifecycle
30+
import androidx.lifecycle.LifecycleOwner
31+
import androidx.lifecycle.LifecycleRegistry
32+
import androidx.lifecycle.lifecycleScope
3033
import androidx.recyclerview.widget.LinearLayoutManager
3134
import com.bumptech.glide.Glide
3235
import com.google.common.util.concurrent.ListenableFuture
36+
import com.kedia.customcamera.utils.getBitmap
37+
import com.kedia.customcamera.utils.getUri
3338
import com.kedia.customcamera.utils.makeGone
3439
import com.kedia.customcamera.utils.makeVisible
3540
import kotlinx.android.synthetic.main.custom_camera.view.*
@@ -38,10 +43,9 @@ import kotlinx.coroutines.launch
3843
import kotlinx.coroutines.withContext
3944
import java.io.File
4045
import java.lang.Math.abs
41-
import java.util.concurrent.ExecutorService
4246

4347

44-
class CCMultiple : FrameLayout, CustomImageAdapter.CustomAdapterClick, LifecycleOwner {
48+
open class CCMultiple : FrameLayout, CustomImageAdapter.CustomAdapterClick, LifecycleOwner {
4549

4650

4751

@@ -53,6 +57,7 @@ class CCMultiple : FrameLayout, CustomImageAdapter.CustomAdapterClick, Lifecycle
5357
// private lateinit var cameraExecutor: ExecutorService
5458
// private lateinit var outputDirectory: File
5559
private lateinit var camera: androidx.camera.core.Camera
60+
private var progressDialogFragment: ProgressDialogFragment? = null
5661
private lateinit var cameraSelector: CameraSelector
5762

5863
private val imageArrayList: MutableList<Bitmap?> = mutableListOf()
@@ -352,12 +357,15 @@ class CCMultiple : FrameLayout, CustomImageAdapter.CustomAdapterClick, Lifecycle
352357
// Use the image, then make sure to close it.
353358
val buffer = image.planes[0].buffer
354359
val bytes = ByteArray(buffer.capacity()).also { buffer.get(it) }
355-
360+
showProgressDialog("Processing")
356361
lifecycleScope.launch {
357362
withContext(Dispatchers.IO) {
358363

359364
val rotatedBitmap = rotateBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.size))
365+
val uri = rotatedBitmap?.let { getUri(context, it) }
366+
imageArrayList.add(uri?.let { getBitmap(context, it) })
360367
withContext(Dispatchers.Main) {
368+
dismissDialog()
361369
capturedImage.apply {
362370
setImageBitmap(rotatedBitmap)
363371
}
@@ -367,7 +375,6 @@ class CCMultiple : FrameLayout, CustomImageAdapter.CustomAdapterClick, Lifecycle
367375
// Log.d(TAG, bitmap.toString())
368376
changeBrightness(BRIGHTNESS.LOW)
369377
customCameraAdapter.addData(rotatedBitmap)
370-
imageArrayList.add(rotatedBitmap)
371378
frontFlash.makeGone()
372379
val atTop = !imageRecyclerView.canScrollVertically(-1)
373380

@@ -443,6 +450,16 @@ class CCMultiple : FrameLayout, CustomImageAdapter.CustomAdapterClick, Lifecycle
443450
mediaDir else context.filesDir
444451
}
445452

453+
private fun showProgressDialog(message: String?) {
454+
progressDialogFragment = message?.let { ProgressDialogFragment(it) }
455+
val fm: FragmentManager = (context as Fragment).childFragmentManager
456+
progressDialogFragment?.show(fm, ProgressDialogFragment::class.java.toString())
457+
}
458+
459+
private fun dismissDialog() {
460+
progressDialogFragment?.dismissAllowingStateLoss()
461+
}
462+
446463

447464
interface CustomMultiple {
448465
fun onConfirmImagesClicked(imageArrayList: MutableList<Bitmap?>)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.kedia.customcamera
2+
3+
import android.annotation.SuppressLint
4+
import android.app.Dialog
5+
import android.app.ProgressDialog
6+
import android.content.DialogInterface
7+
import android.os.Bundle
8+
import android.view.KeyEvent
9+
import androidx.fragment.app.DialogFragment
10+
11+
@SuppressLint("ValidFragment")
12+
class ProgressDialogFragment(var message: String) :
13+
DialogFragment() {
14+
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
15+
val dialog = ProgressDialog(activity)
16+
dialog.isIndeterminate = true
17+
dialog.setMessage(message)
18+
dialog.setCancelable(false)
19+
dialog.setCanceledOnTouchOutside(false)
20+
// Disable the back button
21+
val keyListener =
22+
DialogInterface.OnKeyListener { _, keyCode, _ ->
23+
keyCode == KeyEvent.KEYCODE_BACK
24+
}
25+
dialog.setOnKeyListener(keyListener)
26+
return dialog
27+
}
28+
29+
}

customcamera/src/main/java/com/kedia/customcamera/utils/TopLevelFunctions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,4 @@ fun getUri(context: Context, bitmap: Bitmap): Uri? {
103103
)
104104
// bitmap.recycle()
105105
return Uri.parse(path)
106-
}
106+
}

0 commit comments

Comments
 (0)