diff --git a/app/libs/barcode_scanner_library_v2.0.8.0.aar b/app/libs/barcode_scanner_library_v2.0.8.0.aar new file mode 100644 index 0000000..d544082 Binary files /dev/null and b/app/libs/barcode_scanner_library_v2.0.8.0.aar differ diff --git a/app/libs/build.gradle b/app/libs/build.gradle new file mode 100644 index 0000000..38a0a59 --- /dev/null +++ b/app/libs/build.gradle @@ -0,0 +1,2 @@ +configurations.maybeCreate("default") +artifacts.add("default", file('barcode_scanner_library_v2.0.8.0.aar')) \ 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 7116a5e..9e6add7 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt @@ -1,18 +1,19 @@ package com.example.hpostesting.presentation -import com.example.hpostesting.presentation.dashboard.DashboardActivity import android.content.Context import android.content.Intent import android.content.SharedPreferences +import android.os.AsyncTask import android.os.Bundle import android.util.Log import android.view.View +import android.widget.EditText import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.LanguageManager - +import com.example.hpostesting.presentation.dashboard.DashboardActivity import com.example.hpostesting.presentation.hemocube.HemocubeActivity import com.example.hpostesting.presentation.testRight.TestRightActivity import com.google.android.material.snackbar.Snackbar @@ -20,16 +21,29 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics import com.journeyapps.barcodescanner.ScanContract import com.journeyapps.barcodescanner.ScanIntentResult import com.journeyapps.barcodescanner.ScanOptions +import com.zebra.barcode.sdk.sms.ConfigurationUpdateEvent +import com.zebra.scannercontrol.DCSSDKDefs +import com.zebra.scannercontrol.DCSSDKDefs.DCSSDK_COMMAND_OPCODE +import com.zebra.scannercontrol.DCSSDKDefs.DCSSDK_RESULT +import com.zebra.scannercontrol.DCSScannerInfo +import com.zebra.scannercontrol.FirmwareUpdateEvent +import com.zebra.scannercontrol.IDcsSdkApiDelegate +import com.zebra.scannercontrol.SDKHandler import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.ActivityKitScanBinding +import java.nio.charset.StandardCharsets -class KitScanActivity : AppCompatActivity() { +class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate { private val TAG = "KitScanActivity" private lateinit var binding: ActivityKitScanBinding private lateinit var sharedPreference: SharedPreferences + var sdkHandler: SDKHandler? = null + var editBarcode: EditText? = null + var mScannerInfoList = ArrayList() + private val barcodeLauncher = registerForActivityResult( ScanContract() ) { result: ScanIntentResult -> @@ -51,6 +65,35 @@ class KitScanActivity : AppCompatActivity() { super.attachBaseContext(newBase) } + + override fun dcssdkEventScannerAppeared(dcsScannerInfo: DCSScannerInfo?) {} + + override fun dcssdkEventScannerDisappeared(i: Int) {} + + override fun dcssdkEventCommunicationSessionEstablished(dcsScannerInfo: DCSScannerInfo?) {} + + override fun dcssdkEventCommunicationSessionTerminated(i: Int) {} +// override fun dcssdkEventBarcode(p0: ByteArray?, p1: Int, p2: Int) { +// TODO("Not yet implemented") +// } + + + override fun dcssdkEventImage(bytes: ByteArray?, i: Int) {} + + override fun dcssdkEventVideo(bytes: ByteArray?, i: Int) {} + + override fun dcssdkEventBinaryData(bytes: ByteArray?, i: Int) {} + + override fun dcssdkEventFirmwareUpdate(firmwareUpdateEvent: FirmwareUpdateEvent?) {} + + override fun dcssdkEventAuxScannerAppeared( + dcsScannerInfo: DCSScannerInfo?, + dcsScannerInfo1: DCSScannerInfo? + ) { + } + + override fun dcssdkEventConfigurationUpdate(configurationUpdateEvent: ConfigurationUpdateEvent?) {} + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -110,7 +153,8 @@ class KitScanActivity : AppCompatActivity() { setSupportActionBar(binding.toolbar) binding.btnScanNow.setOnClickListener { - startScanningNow() +// startScanningNow() + pullTrigger() } @@ -164,6 +208,79 @@ class KitScanActivity : AppCompatActivity() { Toast.makeText(this, R.string.invalid_kit_number, Toast.LENGTH_LONG).show() } } + + //Setting up the SDK handler + + //Setting up the SDK handler + sdkHandler = SDKHandler(this) + + //Registers a particular object which conforms to IDcsSdkApiDelegate interface as a receiver of SDK notifications. + + //Registers a particular object which conforms to IDcsSdkApiDelegate interface as a receiver of SDK notifications. + sdkHandler!!.dcssdkSetDelegate(this) + + //this command is telling the sdk that we're going to be connecting to the scanner via USB + + //this command is telling the sdk that we're going to be connecting to the scanner via USB + sdkHandler!!.dcssdkSetOperationalMode(DCSSDKDefs.DCSSDK_MODE.DCSSDK_OPMODE_SNAPI) + + + //deciding what kind of notifications we want to receive. Explained more in the function + //first we use bitmapping to set these values into the notifications_mask. + + + //deciding what kind of notifications we want to receive. Explained more in the function + //first we use bitmapping to set these values into the notifications_mask. + var notifications_mask = 0 + // We would like to subscribe to all barcode events + // We would like to subscribe to all barcode events + notifications_mask = + notifications_mask or DCSSDKDefs.DCSSDK_EVENT.DCSSDK_EVENT_BARCODE.value + // subscribe to events set in notification mask + // subscribe to events set in notification mask + sdkHandler!!.dcssdkSubsribeForEvents(notifications_mask) + + + //so adding all the scanners to the mScannerInfoList, then connecting to the first scanner. + //There's only one scanner so this step is unnecessary, I did it thinking about possible scalability. + //here I just get the list of available scanners which also returns the USB scanner attached to the tinker board. + + + //so adding all the scanners to the mScannerInfoList, then connecting to the first scanner. + //There's only one scanner so this step is unnecessary, I did it thinking about possible scalability. + //here I just get the list of available scanners which also returns the USB scanner attached to the tinker board. + mScannerInfoList.addAll(sdkHandler!!.dcssdkGetAvailableScannersList()) + + //I'm doing mScannerInfoList.get(0) because there's only one scanner which will be at position 0. + + //I'm doing mScannerInfoList.get(0) because there's only one scanner which will be at position 0. + sdkHandler!!.dcssdkEstablishCommunicationSession(mScannerInfoList[0].scannerID) + } + + fun pullTrigger() { + if (!mScannerInfoList[0].isActive) { + sdkHandler!!.dcssdkEstablishCommunicationSession(mScannerInfoList[0].scannerID) + } + val inXML = " 1 " + val outXML = StringBuilder() + val result: DCSSDK_RESULT = + sdkHandler!!.dcssdkExecuteCommandOpCodeInXMLForScanner( + DCSSDK_COMMAND_OPCODE.DCSSDK_DEVICE_PULL_TRIGGER, inXML, outXML, 1 + ) + if (result == DCSSDK_RESULT.DCSSDK_RESULT_SUCCESS) Log.d( + "Scanning", + "Success" + ) else if (result == DCSSDK_RESULT.DCSSDK_RESULT_FAILURE) Log.d("Scanning", "Failed") + //new MyAsyncTask(1, DCSSDKDefs.DCSSDK_COMMAND_OPCODE.DCSSDK_DEVICE_PULL_TRIGGER,null).execute(inXML); + } + + //this function is called if barcode is detected. + override fun dcssdkEventBarcode(barcodeData: ByteArray?, barcodeType: Int, fromScannerID: Int) { + val result = String(barcodeData!!) + Log.d("BARCODE", result) + runOnUiThread { + binding.tvTitle2.text = result + } } private fun checkHemoCubeKitData(): Boolean { diff --git a/app/src/main/res/layout/activity_kitscan_java.xml b/app/src/main/res/layout/activity_kitscan_java.xml new file mode 100644 index 0000000..3b1068c --- /dev/null +++ b/app/src/main/res/layout/activity_kitscan_java.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/barcode_scanner_library_v2.0.8.0/barcode_scanner_library_v2.0.8.0.aar b/barcode_scanner_library_v2.0.8.0/barcode_scanner_library_v2.0.8.0.aar new file mode 100644 index 0000000..d544082 Binary files /dev/null and b/barcode_scanner_library_v2.0.8.0/barcode_scanner_library_v2.0.8.0.aar differ diff --git a/barcode_scanner_library_v2.0.8.0/build.gradle b/barcode_scanner_library_v2.0.8.0/build.gradle new file mode 100644 index 0000000..38a0a59 --- /dev/null +++ b/barcode_scanner_library_v2.0.8.0/build.gradle @@ -0,0 +1,2 @@ +configurations.maybeCreate("default") +artifacts.add("default", file('barcode_scanner_library_v2.0.8.0.aar')) \ No newline at end of file