From 106aa496fca5f76419d0ed98f00744aadbe32400 Mon Sep 17 00:00:00 2001 From: "smileomi18@gmail.com" Date: Thu, 27 Jul 2023 17:12:14 +0530 Subject: [PATCH] HemoCube new Changes --- app/src/main/AndroidManifest.xml | 2 - .../hpostesting/presentation/MainActivity.kt | 76 ++++++++++++++++++- 2 files changed, 75 insertions(+), 3 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fbe777c..45ed941 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,8 +16,6 @@ - - DataHolder.usbConnected.value = false UsbManager.ACTION_USB_DEVICE_ATTACHED -> DataHolder.usbConnected.value = true } + + + synchronized(this) { + val device: UsbDevice? = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE) + + if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) { + device?.apply { + connectUsb(true) + } + } else { + onErrorReported("permission denied for device") + } + } + checkAndUpdateUsbConnection() + + + + + } } @@ -138,6 +164,46 @@ class MainActivity : AppCompatActivity() { } } + private fun connectUsb(permissionGranted: Boolean) { + Log.d(TAG, "connectUsb() called, permission variable = $permissionGranted") + val manager = getSystemService(Context.USB_SERVICE) as UsbManager + val availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager) + + if (availableDrivers.isEmpty()) { + onErrorReported("No Device is Connected") + } else { + mDriver = availableDrivers[0] + + if (mConnection == null) { + requestUserPermission(manager, mDriver.device) + } else { +// setupService() + } + } + } + + private fun requestUserPermission(manager: UsbManager, device: UsbDevice) { + val mPendingIntent: PendingIntent + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + mPendingIntent = PendingIntent.getBroadcast( + this, + 0, + Intent(Constants.ACTION_USB_PERMISSION), + PendingIntent.FLAG_MUTABLE + ) + } else { + mPendingIntent = PendingIntent.getBroadcast( + this, + 0, + Intent(Constants.ACTION_USB_PERMISSION), + PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE + ) + } + + val filter = IntentFilter(Constants.ACTION_USB_PERMISSION) + registerReceiver(usbReceiver, filter) + manager.requestPermission(device, mPendingIntent) + } private fun setupListeners() { binding.cvItem1.setOnClickListener { DataHolder.selectedTestType = TestType.SICKLECERT @@ -258,6 +324,14 @@ class MainActivity : AppCompatActivity() { stopLocationUpdates() } + + fun onErrorReported(msg: String) { + Toast.makeText(this, msg, Toast.LENGTH_SHORT).show() + if (!isFinishing) + onBackPressed() + } + + override fun onRequestPermissionsResult( requestCode: Int, permissions: Array, grantResults: IntArray ) {