From ae5529f66334ce94d29ae6546e628b93014e9f96 Mon Sep 17 00:00:00 2001 From: furki Date: Sat, 21 Oct 2023 12:34:31 +0300 Subject: [PATCH] [refactor] code cleaning + reformatting --- README.md | 2 +- app/build.gradle | 2 +- .../ExampleInstrumentedTest.kt | 24 ------ .../cameraxmlkitpackexample/MainActivity.kt | 16 +++- .../cameraxmlkitpackexample/QrActivity.kt | 38 +++++----- .../QrDialogFragment.kt | 75 +++++++++---------- .../ExampleUnitTest.kt | 17 ----- camerax-mlkit-pack/build.gradle | 2 +- .../ExampleInstrumentedTest.kt | 24 ------ .../src/main/AndroidManifest.xml | 1 + .../camerax_mlkit_pack/CameraxManager.kt | 7 +- .../furkan/camerax_mlkit_pack/core/Utils.kt | 12 +-- .../core/state/BarcodeResultEvent.kt | 5 -- .../camerax_mlkit_pack/ExampleUnitTest.kt | 17 ----- 14 files changed, 83 insertions(+), 159 deletions(-) delete mode 100644 app/src/androidTest/java/com/furkan/cameraxmlkitpackexample/ExampleInstrumentedTest.kt delete mode 100644 app/src/test/java/com/furkan/cameraxmlkitpackexample/ExampleUnitTest.kt delete mode 100644 camerax-mlkit-pack/src/androidTest/java/com/furkan/camerax_mlkit_pack/ExampleInstrumentedTest.kt delete mode 100644 camerax-mlkit-pack/src/main/java/com/furkan/camerax_mlkit_pack/core/state/BarcodeResultEvent.kt delete mode 100644 camerax-mlkit-pack/src/test/java/com/furkan/camerax_mlkit_pack/ExampleUnitTest.kt diff --git a/README.md b/README.md index 2fe131e..242e0ad 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ No need to waste time on CameraX and ML Kit app anymore. This library will speed ```sh dependencies { ... - implementation 'com.github.furkanturkn:camerax-mlkit-pack:1.0.9' + implementation 'com.github.furkanturkn:camerax-mlkit-pack:1.1.0' } ```

(back to top)

diff --git a/app/build.gradle b/app/build.gradle index 7f8ff81..ec3d001 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,5 +48,5 @@ dependencies { implementation "androidx.camera:camera-view:1.2.1" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.5.1" -// implementation 'com.github.furkanturkn:camerax-mlkit-pack:1.0.8' +// implementation 'com.github.furkanturkn:camerax-mlkit-pack:1.1.0' } \ No newline at end of file diff --git a/app/src/androidTest/java/com/furkan/cameraxmlkitpackexample/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/furkan/cameraxmlkitpackexample/ExampleInstrumentedTest.kt deleted file mode 100644 index ddacec7..0000000 --- a/app/src/androidTest/java/com/furkan/cameraxmlkitpackexample/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.furkan.cameraxmlkitpackexample - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.furkan.cameraxmlkitpackexample", appContext.packageName) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/furkan/cameraxmlkitpackexample/MainActivity.kt b/app/src/main/java/com/furkan/cameraxmlkitpackexample/MainActivity.kt index 2755229..398850f 100644 --- a/app/src/main/java/com/furkan/cameraxmlkitpackexample/MainActivity.kt +++ b/app/src/main/java/com/furkan/cameraxmlkitpackexample/MainActivity.kt @@ -1,24 +1,34 @@ package com.furkan.cameraxmlkitpackexample import android.content.Intent -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button +import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { + + companion object { + const val REQUEST_CODE_PERMISSIONS = 10 + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + val btnQrReaderActivity: Button = findViewById(R.id.btnQrReaderActivity) val btnQrReaderFragment: Button = findViewById(R.id.btnQrReaderFragment) - btnQrReaderActivity.setOnClickListener{ + + btnQrReaderActivity.setOnClickListener { val qrReaderActivityIntent = Intent(applicationContext, QrActivity::class.java) startActivity(qrReaderActivityIntent) } - btnQrReaderFragment.setOnClickListener{ + + btnQrReaderFragment.setOnClickListener { val qrReaderFragment = QrDialogFragment() qrReaderFragment.show(supportFragmentManager, "QR_FRAGMENT") } + + } } \ No newline at end of file diff --git a/app/src/main/java/com/furkan/cameraxmlkitpackexample/QrActivity.kt b/app/src/main/java/com/furkan/cameraxmlkitpackexample/QrActivity.kt index 0534544..822ace5 100644 --- a/app/src/main/java/com/furkan/cameraxmlkitpackexample/QrActivity.kt +++ b/app/src/main/java/com/furkan/cameraxmlkitpackexample/QrActivity.kt @@ -15,25 +15,25 @@ import androidx.lifecycle.lifecycleScope import com.furkan.camerax_mlkit_pack.CameraxManager import com.furkan.camerax_mlkit_pack.core.ReaderType import com.furkan.camerax_mlkit_pack.core.state.FlashStatus +import com.furkan.cameraxmlkitpackexample.MainActivity.Companion.REQUEST_CODE_PERMISSIONS import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch class QrActivity : AppCompatActivity() { - private val REQUIRED_PERMISSIONS = + private val requiredPermissions = mutableListOf( Manifest.permission.CAMERA ).toTypedArray() - private val REQUEST_CODE_PERMISSIONS = 10 - private var cameraxManager: CameraxManager? = null + private lateinit var previewView: PreviewView private lateinit var focusRing: ImageView private lateinit var btnFlash: Button private lateinit var ivCapturePreview: ImageView - lateinit var btnCapturePhoto: Button - lateinit var btnChangeCameraType: Button + private lateinit var btnCapturePhoto: Button + private lateinit var btnChangeCameraType: Button private lateinit var btnStartCamera: Button private lateinit var btnStopCamera: Button private lateinit var btnStartReading: Button @@ -79,16 +79,6 @@ class QrActivity : AppCompatActivity() { } - private fun checkCameraPermission() { - if (allPermissionsGranted()) { - initCameraManager() - } else { - ActivityCompat.requestPermissions( - this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS - ) - } - } - private fun initViews() { previewView = findViewById(R.id.previewView) focusRing = findViewById(R.id.focusRing) @@ -104,6 +94,7 @@ class QrActivity : AppCompatActivity() { } private fun initCameraManager() { + cameraxManager = CameraxManager.getInstance( this, null, @@ -135,6 +126,7 @@ class QrActivity : AppCompatActivity() { FlashStatus.ENABLED -> { btnFlash.setBackgroundResource(R.drawable.baseline_flash_on_24) } + FlashStatus.DISABLED -> { btnFlash.setBackgroundResource(R.drawable.baseline_flash_off_24) } @@ -154,8 +146,18 @@ class QrActivity : AppCompatActivity() { cameraxManager?.destroyReferences() } - //[START] Permission Check - private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all { + //region Permission Check + private fun checkCameraPermission() { + if (allPermissionsGranted()) { + initCameraManager() + } else { + ActivityCompat.requestPermissions( + this, requiredPermissions, REQUEST_CODE_PERMISSIONS + ) + } + } + + private fun allPermissionsGranted() = requiredPermissions.all { ContextCompat.checkSelfPermission( baseContext, it ) == PackageManager.PERMISSION_GRANTED @@ -179,5 +181,5 @@ class QrActivity : AppCompatActivity() { } } } - //[END] Permission Check + //endregion Permission Check } \ No newline at end of file diff --git a/app/src/main/java/com/furkan/cameraxmlkitpackexample/QrDialogFragment.kt b/app/src/main/java/com/furkan/cameraxmlkitpackexample/QrDialogFragment.kt index 28c4691..3a28e46 100644 --- a/app/src/main/java/com/furkan/cameraxmlkitpackexample/QrDialogFragment.kt +++ b/app/src/main/java/com/furkan/cameraxmlkitpackexample/QrDialogFragment.kt @@ -3,21 +3,28 @@ package com.furkan.cameraxmlkitpackexample import android.Manifest import android.content.pm.PackageManager import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast -import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.fragment.app.DialogFragment -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.furkan.camerax_mlkit_pack.CameraxManager import com.furkan.camerax_mlkit_pack.core.ReaderType import com.furkan.camerax_mlkit_pack.core.state.FlashStatus -import kotlinx.android.synthetic.main.fragment_qr_dialog.* -import kotlinx.android.synthetic.main.fragment_qr_dialog.view.* +import com.furkan.cameraxmlkitpackexample.MainActivity.Companion.REQUEST_CODE_PERMISSIONS +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.btnCapturePhotoFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.btnChangeCameraTypeFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.btnFlashFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.btnStartCameraFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.btnStartReadingFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.btnStopCameraFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.btnStopReadingFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.focusRingFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.ivCapturePreviewFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.previewViewFragment +import kotlinx.android.synthetic.main.fragment_qr_dialog.view.tvReadResultFragment import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -25,14 +32,11 @@ import kotlinx.coroutines.launch class QrDialogFragment : DialogFragment(R.layout.fragment_qr_dialog) { private lateinit var rootView: View - private var cameraxManager: CameraxManager? = null - - private val REQUIRED_PERMISSIONS = - mutableListOf( - Manifest.permission.CAMERA - ).toTypedArray() + private val requiredPermissions = mutableListOf( + Manifest.permission.CAMERA + ).toTypedArray() - private val REQUEST_CODE_PERMISSIONS = 10 + private var cameraxManager: CameraxManager? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -74,15 +78,8 @@ class QrDialogFragment : DialogFragment(R.layout.fragment_qr_dialog) { return rootView } - private fun checkCameraPermission() { - if (allPermissionsGranted()) { - initCameraManager(this) - } else { - requestPermissions( - REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS - ) - } - } + + private fun initCameraManager(qrDialogFragment: QrDialogFragment) { cameraxManager = CameraxManager.getInstance( requireContext(), @@ -115,6 +112,7 @@ class QrDialogFragment : DialogFragment(R.layout.fragment_qr_dialog) { FlashStatus.ENABLED -> { rootView.btnFlashFragment.setBackgroundResource(R.drawable.baseline_flash_on_24) } + FlashStatus.DISABLED -> { rootView.btnFlashFragment.setBackgroundResource(R.drawable.baseline_flash_off_24) } @@ -128,34 +126,33 @@ class QrDialogFragment : DialogFragment(R.layout.fragment_qr_dialog) { } } } - /*private fun checkCameraPermission() { + + override fun onDestroy() { + super.onDestroy() + cameraxManager?.destroyReferences() + } + + //region Permission Check + private fun checkCameraPermission() { if (allPermissionsGranted()) { initCameraManager(this) } else { - ActivityCompat.requestPermissions( - this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS + requestPermissions( + requiredPermissions, REQUEST_CODE_PERMISSIONS ) } - }*/ - - override fun onStart() { - super.onStart() } - override fun onDestroy() { - super.onDestroy() - cameraxManager?.destroyReferences() - } - //[START] Permission Check - private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all { + private fun allPermissionsGranted() = requiredPermissions.all { ContextCompat.checkSelfPermission( requireContext(), it ) == PackageManager.PERMISSION_GRANTED } override fun onRequestPermissionsResult( - requestCode: Int, permissions: Array, grantResults: - IntArray + requestCode: Int, + permissions: Array, + grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) if (requestCode == REQUEST_CODE_PERMISSIONS) { @@ -164,13 +161,11 @@ class QrDialogFragment : DialogFragment(R.layout.fragment_qr_dialog) { } else { Toast.makeText( - requireContext(), - "Permissions not granted by the user.", - Toast.LENGTH_SHORT + requireContext(), "Permissions not granted by the user.", Toast.LENGTH_SHORT ).show() } } } - //[END] Permission Check + //endregion Permission Check } \ No newline at end of file diff --git a/app/src/test/java/com/furkan/cameraxmlkitpackexample/ExampleUnitTest.kt b/app/src/test/java/com/furkan/cameraxmlkitpackexample/ExampleUnitTest.kt deleted file mode 100644 index fa62a5b..0000000 --- a/app/src/test/java/com/furkan/cameraxmlkitpackexample/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.furkan.cameraxmlkitpackexample - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file diff --git a/camerax-mlkit-pack/build.gradle b/camerax-mlkit-pack/build.gradle index 5d7252a..8f4d827 100644 --- a/camerax-mlkit-pack/build.gradle +++ b/camerax-mlkit-pack/build.gradle @@ -50,7 +50,7 @@ afterEvaluate { groupId = 'com.github.furkanturkn' artifactId = 'camerax-mlkit-pack' - version = '1.0.9' + version = '1.1.0' } } } diff --git a/camerax-mlkit-pack/src/androidTest/java/com/furkan/camerax_mlkit_pack/ExampleInstrumentedTest.kt b/camerax-mlkit-pack/src/androidTest/java/com/furkan/camerax_mlkit_pack/ExampleInstrumentedTest.kt deleted file mode 100644 index 749a34d..0000000 --- a/camerax-mlkit-pack/src/androidTest/java/com/furkan/camerax_mlkit_pack/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.furkan.camerax_mlkit_pack - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.furkan.camerax_mlkit_pack.test", appContext.packageName) - } -} \ No newline at end of file diff --git a/camerax-mlkit-pack/src/main/AndroidManifest.xml b/camerax-mlkit-pack/src/main/AndroidManifest.xml index 63d97e9..472b5d9 100644 --- a/camerax-mlkit-pack/src/main/AndroidManifest.xml +++ b/camerax-mlkit-pack/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ + Unit)? = null fun setQrReadSuccessListener(listener: (String) -> Unit) { qrReadSuccessListener = listener @@ -114,7 +114,7 @@ class CameraxManager( capturedPhotoBitmap(captureResult) } } - //[END] Listeners + //endregion Listeners companion object { @SuppressLint("StaticFieldLeak") @@ -185,6 +185,7 @@ class CameraxManager( CameraSelector.LENS_FACING_BACK -> { mCameraSelectorType = CameraSelector.LENS_FACING_FRONT } + CameraSelector.LENS_FACING_FRONT -> { mCameraSelectorType = CameraSelector.LENS_FACING_BACK } @@ -229,6 +230,7 @@ class CameraxManager( cameraControl?.enableTorch(false) sendFlashStatusChanged(FlashStatus.DISABLED) } + FlashStatus.DISABLED -> { flashStatus = FlashStatus.ENABLED cameraControl?.enableTorch(true) @@ -405,6 +407,7 @@ class CameraxManager( cameraControl?.startFocusAndMetering(action) return@setOnTouchListener true } + else -> { Log.d(MLKIT_READER_MANAGER_TAG, "other action") return@setOnTouchListener false diff --git a/camerax-mlkit-pack/src/main/java/com/furkan/camerax_mlkit_pack/core/Utils.kt b/camerax-mlkit-pack/src/main/java/com/furkan/camerax_mlkit_pack/core/Utils.kt index 5f2f170..513ed8d 100644 --- a/camerax-mlkit-pack/src/main/java/com/furkan/camerax_mlkit_pack/core/Utils.kt +++ b/camerax-mlkit-pack/src/main/java/com/furkan/camerax_mlkit_pack/core/Utils.kt @@ -24,30 +24,30 @@ import kotlin.coroutines.suspendCoroutine object Utils { - fun ImageView.setViewLocation(x: Float, y: Float) { + internal fun ImageView.setViewLocation(x: Float, y: Float) { val width = this.width val height = this.height this.x = x - width / 2 this.y = y - height / 2 } - fun ImageView.visible() { + internal fun ImageView.visible() { this.visibility = View.VISIBLE this.alpha = 1f } - fun ImageView.inVisible() { + internal fun ImageView.inVisible() { this.visibility = View.INVISIBLE } - fun ObjectAnimator.initAnimation() { + internal fun ObjectAnimator.initAnimation() { this.duration = 500 this.repeatCount = ValueAnimator.RESTART this.repeatMode = ValueAnimator.REVERSE } - suspend fun ImageCapture.takePhoto(executor: Executor): File { + internal suspend fun ImageCapture.takePhoto(executor: Executor): File { val photoFile = withContext(Dispatchers.IO) { kotlin.runCatching { File.createTempFile("image", "jpg") @@ -76,7 +76,7 @@ object Utils { } } - fun Uri.convertToBitmap(contentResolver: ContentResolver, cameraType: Int): Bitmap { + internal fun Uri.convertToBitmap(contentResolver: ContentResolver, cameraType: Int): Bitmap { return MediaStore.Images.Media.getBitmap(contentResolver, this).rotateBitmap(cameraType) } diff --git a/camerax-mlkit-pack/src/main/java/com/furkan/camerax_mlkit_pack/core/state/BarcodeResultEvent.kt b/camerax-mlkit-pack/src/main/java/com/furkan/camerax_mlkit_pack/core/state/BarcodeResultEvent.kt deleted file mode 100644 index fe501bd..0000000 --- a/camerax-mlkit-pack/src/main/java/com/furkan/camerax_mlkit_pack/core/state/BarcodeResultEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.furkan.camerax_mlkit_pack.core.state - -sealed class BarcodeResultEvent { - data class SuccessEvent(val barcodeResult: String) : BarcodeResultEvent() -} \ No newline at end of file diff --git a/camerax-mlkit-pack/src/test/java/com/furkan/camerax_mlkit_pack/ExampleUnitTest.kt b/camerax-mlkit-pack/src/test/java/com/furkan/camerax_mlkit_pack/ExampleUnitTest.kt deleted file mode 100644 index 341bf41..0000000 --- a/camerax-mlkit-pack/src/test/java/com/furkan/camerax_mlkit_pack/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.furkan.camerax_mlkit_pack - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file