diff --git a/app/build.gradle b/app/build.gradle index 7025e23..7f7f01a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,7 +14,7 @@ android { namespace 'in.sminnovations.hpostesting' defaultConfig { - applicationId "in.sminnovations.hpostesting.prod" + applicationId "in.sminnovations.hpostesting" minSdk 21 targetSdk 33 versionCode 2 diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt index fb47abb..4c008eb 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt @@ -23,6 +23,7 @@ object Constants { const val DEVICE_PRODUCT_ID = 24597 const val DEVICE_TYPE_HOMOCUBE = "HOMOCUBE" + const val DEVICE_TYPE_TEST_RIGHT = "TEST_RIGHT" const val DEVICE_VENDOR_ID = 1027 const val HOMO_CUBE_ID = 29987 diff --git a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt index 9eb9199..077595d 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt @@ -1,10 +1,7 @@ package com.example.hpostesting.presentation import android.Manifest -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -import android.content.IntentFilter +import android.content.* import android.content.pm.PackageManager import android.hardware.usb.UsbManager import android.location.Location @@ -21,11 +18,7 @@ import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.model.patient.UserData import com.example.hpostesting.data.model.test.TestType -import com.google.android.gms.location.FusedLocationProviderClient -import com.google.android.gms.location.LocationCallback -import com.google.android.gms.location.LocationRequest -import com.google.android.gms.location.LocationResult -import com.google.android.gms.location.LocationServices +import com.google.android.gms.location.* import com.hoho.android.usbserial.driver.UsbSerialProber import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.ActivityMainBinding @@ -33,22 +26,18 @@ import `in`.sminnovations.hpostesting.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding - private var myMenu: Menu? = null - private val TAG = "MainActivity" - private lateinit var fusedLocationClient: FusedLocationProviderClient private lateinit var locationCallback: LocationCallback - private var mUsbReceiver: BroadcastReceiver = object : BroadcastReceiver() { + private val usbReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent) { - val action = intent.action - if (UsbManager.ACTION_USB_DEVICE_DETACHED == action) { - DataHolder.usbConnected.value = false - } else if (UsbManager.ACTION_USB_DEVICE_ATTACHED == action) { - DataHolder.usbConnected.value = true + when (intent.action) { + UsbManager.ACTION_USB_DEVICE_DETACHED -> DataHolder.usbConnected.value = false + UsbManager.ACTION_USB_DEVICE_ATTACHED -> DataHolder.usbConnected.value = true } + checkAndUpdateUsbConnection() } } @@ -72,26 +61,21 @@ class MainActivity : AppCompatActivity() { } } - val filter = IntentFilter().apply { + val usbFilter = IntentFilter().apply { addAction(UsbManager.ACTION_USB_DEVICE_DETACHED) addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED) } - registerReceiver(mUsbReceiver, filter) + registerReceiver(usbReceiver, usbFilter) + DataHolder.deviceType.observe(this) { deviceType -> - when (deviceType) { - Constants.DEVICE_TYPE_HOMOCUBE -> { - binding.cvItem1.visibility = View.VISIBLE - binding.cvItem3.visibility = View.VISIBLE - binding.cvItem2.visibility = View.GONE - binding.cvItem4.visibility = View.GONE - Toast.makeText(this, "HomoCube Connected", Toast.LENGTH_SHORT).show() - DataHolder.usbConnected.value = true - DataHolder.deviceType.postValue(Constants.DEVICE_TYPE_HOMOCUBE) - } - - "Test" -> { - - } + with(binding) { + cvItem1.visibility = + if (deviceType == Constants.DEVICE_TYPE_HOMOCUBE) View.VISIBLE else View.GONE + cvItem2.visibility = + if (deviceType == Constants.DEVICE_TYPE_TEST_RIGHT) View.VISIBLE else View.GONE + cvItem3.visibility = View.VISIBLE + cvItem4.visibility = View.VISIBLE + DataHolder.usbConnected.value = true } } } @@ -99,40 +83,59 @@ class MainActivity : AppCompatActivity() { private fun checkAndUpdateUsbConnection() { val availableDrivers = UsbSerialProber.getDefaultProber() .findAllDrivers(getSystemService(Context.USB_SERVICE) as UsbManager) - if (availableDrivers.isNotEmpty() && availableDrivers[0].device.productId == Constants.DEVICE_PRODUCT_ID && availableDrivers[0].device.vendorId == Constants.DEVICE_VENDOR_ID) { - Log.d( - TAG, - "Device matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}" - ) -// Log.d("mariya", availableDrivers[0].device.toString()) - if (availableDrivers.isNotEmpty() && availableDrivers[0].device.productId == Constants.HOMO_CUBE_ID && availableDrivers[0].device.vendorId == Constants.VENDOR_ID) { - Log.e("HomoCube", "product1") - binding.cvItem1.visibility = View.VISIBLE - binding.cvItem3.visibility = View.VISIBLE - binding.cvItem2.visibility = View.GONE - binding.cvItem4.visibility = View.GONE - Toast.makeText(this, "HomoCube Connected", Toast.LENGTH_SHORT).show() - DataHolder.usbConnected.value = true - DataHolder.deviceType.postValue(Constants.DEVICE_TYPE_HOMOCUBE) - } else if (availableDrivers.isNotEmpty() && availableDrivers[0].device.productId == Constants.DEVICE_PRODUCT_ID && availableDrivers[0].device.vendorId == Constants.DEVICE_VENDOR_ID) { - Log.d( - TAG, - "Device matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}" - ) - DataHolder.usbConnected.value = true - } else if (availableDrivers.isNotEmpty()) { - Log.d( - TAG, - "Device NOT matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}" - ) - Toast.makeText(this, "Device Not Compatible", Toast.LENGTH_SHORT).show() - DataHolder.usbConnected.value = false - } else { + + val deviceType = when { + availableDrivers.isNotEmpty() -> { + val device = availableDrivers[0].device + when { + device.productId == Constants.HOMO_CUBE_ID && device.vendorId == Constants.VENDOR_ID -> { + binding.cvItem1.visibility = View.VISIBLE + binding.cvItem3.visibility = View.VISIBLE + binding.cvItem2.visibility = View.GONE + binding.cvItem4.visibility = View.GONE + DataHolder.deviceType.postValue(Constants.DEVICE_TYPE_HOMOCUBE) + Constants.DEVICE_TYPE_HOMOCUBE + } + + device.productId == Constants.DEVICE_PRODUCT_ID && device.vendorId == Constants.DEVICE_VENDOR_ID -> { + Log.d( + TAG, + "Device matched -> product = ${device.productId}, vendor = ${device.vendorId}" + ) + binding.cvItem1.visibility = View.VISIBLE + binding.cvItem3.visibility = View.VISIBLE + binding.cvItem2.visibility = View.VISIBLE + binding.cvItem4.visibility = View.VISIBLE + DataHolder.deviceType.postValue(Constants.DEVICE_TYPE_TEST_RIGHT) + Constants.DEVICE_TYPE_TEST_RIGHT + } + + else -> { + Log.d( + TAG, + "Device NOT matched -> product = ${device.productId}, vendor = ${device.vendorId}" + ) + val message = + if (device.productId == Constants.DEVICE_PRODUCT_ID) "Device Not Compatible" else "Device Not Connected" + Toast.makeText(this, message, Toast.LENGTH_SHORT).show() + DataHolder.usbConnected.value = false + null + } + } + } + + else -> { Log.d(TAG, "Device NOT Connected") Toast.makeText(this, "Device Not Connected", Toast.LENGTH_SHORT).show() DataHolder.usbConnected.value = false + null } } + + deviceType?.let { + DataHolder.usbConnected.value = true + DataHolder.deviceType.postValue(it) + } } private fun setupListeners() { diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt index 5bfd48b..aae0333 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt @@ -43,7 +43,7 @@ class HemoCubeViewModel@Inject constructor( if (isOnline) { try { addResultTestToDb() - } catch (exception: Exception) { + } catch (_: Exception) { } } else { testDetails?.testTime = SimpleDateFormat(