From b897e7c583020ac3682341b42a76e201e347a625 Mon Sep 17 00:00:00 2001 From: Mariya Date: Wed, 10 Apr 2024 12:30:07 +0530 Subject: [PATCH] kit scan qr code scanning is added, some issues are still resolving only --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 43 ++++----- .../presentation/KitScanActivity.kt | 87 ++++++++++++------- .../presentation/ScannerKitActvity.kt | 73 ++++++++++++++++ app/src/main/res/layout/activity_kit_scan.xml | 3 +- .../layout/activity_scanner_kit_actvity.xml | 25 ++++++ .../layout/activity_scanner_kit_actvity2.xml | 9 ++ app/src/main/res/layout/qrscanner.xml | 25 ++++++ 8 files changed, 212 insertions(+), 55 deletions(-) create mode 100644 app/src/main/java/com/example/hpostesting/presentation/ScannerKitActvity.kt create mode 100644 app/src/main/res/layout/activity_scanner_kit_actvity.xml create mode 100644 app/src/main/res/layout/activity_scanner_kit_actvity2.xml create mode 100644 app/src/main/res/layout/qrscanner.xml diff --git a/app/build.gradle b/app/build.gradle index cd7356b..f37d8b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -129,7 +129,7 @@ dependencies { // Barcode scanner implementation 'com.journeyapps:zxing-android-embedded:4.3.0' - + implementation 'com.github.yuriy-budiyev:code-scanner:2.3.0' // Google ML Kit using play services implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ea83f8c..128bc28 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,14 +6,15 @@ - - - - + + + @@ -25,16 +26,19 @@ + @@ -60,23 +64,20 @@ - + android:theme="@style/Theme.HPOS.NoActionBar" /> - + android:theme="@style/Theme.HPOS.NoActionBar" /> - - + android:theme="@style/Theme.HPOS.NoActionBar" + android:windowSoftInputMode="stateHidden" /> - + + - - - + + + - + tools:replace="android:screenOrientation" /> - \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt index 592a06a..917e7d5 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt @@ -1,5 +1,6 @@ package com.example.hpostesting.presentation +import android.app.Activity import android.content.Context import android.content.Intent import android.content.SharedPreferences @@ -9,6 +10,7 @@ import android.util.Log import android.view.View import android.widget.EditText import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.data.constant.Constants @@ -42,23 +44,36 @@ class KitScanActivity : AppCompatActivity() { var sdkHandler: SDKHandler? = null var editBarcode: EditText? = null var mScannerInfoList = ArrayList() + companion object { + const val QR_REQUEST_CODE = 1 + } +// private val barcodeLauncher = registerForActivityResult( +// ScanContract() +// ) { result: ScanIntentResult -> +// Log.d(TAG, result.contents) +// if (result.contents.isNullOrEmpty()) { +// Toast.makeText(this, R.string.cancelled_unable_scan, Toast.LENGTH_LONG).show() +// } else { +// Log.d(TAG, result.contents) +// processScannedData(result.contents) +// } +// } +// +// private fun processScannedData(contents: String) { +// binding.nameEditText.setText(contents) +// } - private val barcodeLauncher = registerForActivityResult( - ScanContract() - ) { result: ScanIntentResult -> - Log.d(TAG, result.contents) - if (result.contents.isNullOrEmpty()) { - Toast.makeText(this, R.string.cancelled_unable_scan, Toast.LENGTH_LONG).show() - } else { - Log.d(TAG, result.contents) - processScannedData(result.contents) + // In your calling activity + var resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == Activity.RESULT_OK) { // Handle the result + val qrCode = result.data?.getStringExtra("QRCode") + Toast.makeText(this, "scanned kit text:$qrCode", + Toast.LENGTH_LONG).show() +// val editText = findViewById(R.id.name_edit_text) + binding.nameEditText.setText(qrCode) + // Use data to retrieve extra } } - - private fun processScannedData(contents: String) { - binding.nameEditText.setText(contents) - } - override fun attachBaseContext(newBase: Context?) { val languageCode = LanguageManager.getSavedLanguage(newBase!!) LanguageManager.setLocale(newBase, languageCode) @@ -152,8 +167,9 @@ class KitScanActivity : AppCompatActivity() { setSupportActionBar(binding.toolbar) binding.btnScanNow.setOnClickListener { - startScanningNow() -// pullTrigger() +// startForResult.launch(Intent(this, ScannerKitActvity::class.java)) + val intent = Intent(this, ScannerKitActvity::class.java) + resultLauncher.launch(intent) } binding.btnGo.setOnClickListener { @@ -304,21 +320,21 @@ class KitScanActivity : AppCompatActivity() { } } - private fun startScanningNow() { - val options = ScanOptions() - options.setDesiredBarcodeFormats(ScanOptions.QR_CODE) - options.setPrompt("Scan a barcode") - options.setCameraId(0) // Use a specific camera of the device - - options.setBeepEnabled(true) - options.setBarcodeImageEnabled(true) - - options.setPrompt("Start Scanning") - options.setOrientationLocked(false) -// options.setTimeout(10000) // in ms - - barcodeLauncher.launch(options) - } +// private fun startScanningNow() { +// val options = ScanOptions() +// options.setDesiredBarcodeFormats(ScanOptions.QR_CODE) +// options.setPrompt("Scan a barcode") +// options.setCameraId(0) // Use a specific camera of the device +// +// options.setBeepEnabled(true) +// options.setBarcodeImageEnabled(true) +// +// options.setPrompt("Start Scanning") +// options.setOrientationLocked(false) +//// options.setTimeout(10000) // in ms +// +// barcodeLauncher.launch(options) +// } private fun checkDataNotNull(): Boolean { return if (DataHolder.selectedTest?._id == null) { @@ -334,4 +350,13 @@ class KitScanActivity : AppCompatActivity() { true } } + +// override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { +// super.onActivityResult(requestCode, resultCode, data) +// if (requestCode == QR_REQUEST_CODE && resultCode == Activity.RESULT_OK) { +// val qrCode = data?.getStringExtra("QRCode") +//// val editText = findViewById(R.id.name_edit_text) +// binding.nameEditText.setText(qrCode) +// } +// } } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/ScannerKitActvity.kt b/app/src/main/java/com/example/hpostesting/presentation/ScannerKitActvity.kt new file mode 100644 index 0000000..d58ec29 --- /dev/null +++ b/app/src/main/java/com/example/hpostesting/presentation/ScannerKitActvity.kt @@ -0,0 +1,73 @@ +package com.example.hpostesting.presentation + +import android.app.Activity +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.widget.Toast +import com.budiyev.android.codescanner.AutoFocusMode +import com.budiyev.android.codescanner.CodeScanner +import com.budiyev.android.codescanner.CodeScannerView +import com.budiyev.android.codescanner.DecodeCallback +import com.budiyev.android.codescanner.ErrorCallback +import com.budiyev.android.codescanner.ScanMode +import `in`.sminnovations.hpostesting.R + +class ScannerKitActvity : AppCompatActivity() { + private lateinit var codeScanner: CodeScanner + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_scanner_kit_actvity) + val scannerView = findViewById(R.id.scanner_view) + + codeScanner = CodeScanner(this, scannerView) + + // Parameters (default values) + codeScanner.camera = CodeScanner.CAMERA_BACK // or CAMERA_FRONT or specific camera id + codeScanner.formats = CodeScanner.ALL_FORMATS // list of type BarcodeFormat, + // ex. listOf(BarcodeFormat.QR_CODE) + codeScanner.autoFocusMode = AutoFocusMode.SAFE // or CONTINUOUS + codeScanner.scanMode = ScanMode.SINGLE // or CONTINUOUS or PREVIEW + codeScanner.isAutoFocusEnabled = true // Whether to enable auto focus or not + codeScanner.isFlashEnabled = false // Whether to enable flash or not + + // Callbacks + codeScanner.decodeCallback = DecodeCallback { + runOnUiThread { + Toast.makeText(this, "scanned text: ${it.text}", + Toast.LENGTH_LONG).show() + } + val resultIntent = Intent() + resultIntent.putExtra("QRCode", it.text) + setResult(Activity.RESULT_OK, resultIntent) + + + } + codeScanner.errorCallback = ErrorCallback { // or ErrorCallback.SUPPRESS + runOnUiThread { + Toast.makeText(this, "Camera initialization error: ${it.message}", + Toast.LENGTH_LONG).show() + } + } + + scannerView.setOnClickListener { + codeScanner.startPreview() + } + } + + override fun onResume() { + super.onResume() + codeScanner.startPreview() + } + + override fun onPause() { + codeScanner.releaseResources() + super.onPause() + } + + override fun onBackPressed() { + // You can do additional work here before calling super + super.onBackPressed() // This calls finish() behind the scenes for you + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_kit_scan.xml b/app/src/main/res/layout/activity_kit_scan.xml index aa84355..38a1139 100644 --- a/app/src/main/res/layout/activity_kit_scan.xml +++ b/app/src/main/res/layout/activity_kit_scan.xml @@ -3,8 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context=".presentation.KitScanActivity"> + android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_scanner_kit_actvity2.xml b/app/src/main/res/layout/activity_scanner_kit_actvity2.xml new file mode 100644 index 0000000..f218654 --- /dev/null +++ b/app/src/main/res/layout/activity_scanner_kit_actvity2.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/qrscanner.xml b/app/src/main/res/layout/qrscanner.xml new file mode 100644 index 0000000..d92bbe0 --- /dev/null +++ b/app/src/main/res/layout/qrscanner.xml @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file