Updating USB Symbol based on device is connected or not using livedata.

This commit is contained in:
vsuryakumar
2023-02-01 13:06:10 +05:30
parent 4e19f6f337
commit 9d0055147e
4 changed files with 37 additions and 5 deletions

View File

@@ -5,7 +5,8 @@ import com.example.hpos.data.model.TestRightDeviceConstants
object DataHolder { object DataHolder {
// var usbConnected: Boolean = false // var usbConnected: Boolean = false
val usbConnected = MutableLiveData(false) // val usbConnected = MutableLiveData(false)
val usbConnected = MutableLiveData(true)
var isStoragePermissionGranted = false var isStoragePermissionGranted = false
var isAppFolderCreated = false var isAppFolderCreated = false

View File

@@ -9,10 +9,13 @@ object Constants {
const val TEST_RIGHT_TOTAL_PIXEL = 3694 const val TEST_RIGHT_TOTAL_PIXEL = 3694
// const val TEST_RIGHT_TOTAL_PIXEL = 12 // const val TEST_RIGHT_TOTAL_PIXEL = 12
const val MAXIMUM_TEST_ALLOWED_BEFORE_REFERENCE = 1 const val MAXIMUM_TEST_ALLOWED_BEFORE_REFERENCE = 10
const val RANGE_IN_RESULT_CALCULATIONS = 10 const val RANGE_IN_RESULT_CALCULATIONS = 10
const val WAVELENGTH_OF_INTEREST_ONE = 427 const val WAVELENGTH_OF_INTEREST_ONE = 427
const val WAVELENGTH_OF_INTEREST_TWO = 555 const val WAVELENGTH_OF_INTEREST_TWO = 555
const val DEVICE_PRODUCT_ID = 24597
const val DEVICE_VENDOR_ID = 1027
} }

View File

@@ -4,8 +4,10 @@ import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.hardware.usb.UsbDevice
import android.hardware.usb.UsbManager import android.hardware.usb.UsbManager
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.Gravity import android.view.Gravity
import android.view.Menu import android.view.Menu
import android.widget.Toast import android.widget.Toast
@@ -15,9 +17,11 @@ import androidx.core.view.get
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.example.hpos.R import com.example.hpos.R
import com.example.hpos.data.DataHolder import com.example.hpos.data.DataHolder
import com.example.hpos.data.constant.Constants
import com.example.hpos.databinding.ActivityMainBinding import com.example.hpos.databinding.ActivityMainBinding
import com.example.hpos.presentation.testRight.TestRightActivity import com.example.hpos.presentation.testRight.TestRightActivity
import com.example.hpos.util.MyViewModelFactory import com.example.hpos.util.MyViewModelFactory
import com.hoho.android.usbserial.driver.UsbSerialProber
class MainActivity : AppCompatActivity() class MainActivity : AppCompatActivity()
@@ -64,6 +68,21 @@ class MainActivity : AppCompatActivity()
registerReceiver(mUsbReceiver, filter) registerReceiver(mUsbReceiver, filter)
} }
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}")
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 {
Log.d(TAG, "Device NOT Connected")
DataHolder.usbConnected.value = false
}
}
private fun setupListeners() { private fun setupListeners() {
binding.cvItem1.setOnClickListener { binding.cvItem1.setOnClickListener {
@@ -76,11 +95,12 @@ class MainActivity : AppCompatActivity()
} }
DataHolder.usbConnected.observe(this){ DataHolder.usbConnected.observe(this){
// Log.d(TAG, "usbConnected observer called with value -> $it")
if (it){ if (it){
myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24) myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24)
} else { } else {
// Log.d(TAG, "into no block -> $it")
myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_off_24) myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_off_24)
Toast.makeText(this, "USB NOT CONNECTED", Toast.LENGTH_SHORT).show()
} }
} }
} }
@@ -88,7 +108,7 @@ class MainActivity : AppCompatActivity()
override fun onCreateOptionsMenu(menu: Menu?): Boolean { override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.my_menu, menu) menuInflater.inflate(R.menu.my_menu, menu)
myMenu = menu myMenu = menu
DataHolder.usbConnected.value = DataHolder.usbConnected.value checkAndUpdateUsbConnection()
return true return true
} }

View File

@@ -88,12 +88,13 @@ class TestRightActivity : AppCompatActivity() {
private fun setupListener() { private fun setupListener() {
DataHolder.usbConnected.observe(this){ DataHolder.usbConnected.observe(this){
Log.d("USB OBSERVE", "testrightactivity called -> $it")
if (it){ if (it){
myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24) myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24)
} else { } else {
myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_off_24) myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_off_24)
// val myToast = Toast.makeText(this, "USB is Detached", Toast.LENGTH_SHORT) // val myToast = Toast.makeText(this, "USB is Detached", Toast.LENGTH_SHORT)
Toast.makeText(this, "USB is Detached", Toast.LENGTH_SHORT).show() Toast.makeText(this, "Device is Disconnected", Toast.LENGTH_SHORT).show()
} }
} }
} }
@@ -112,6 +113,13 @@ class TestRightActivity : AppCompatActivity() {
onUsbError("No Device is Connected") onUsbError("No Device is Connected")
} else { } else {
mDriver = availableDrivers[0] mDriver = availableDrivers[0]
if (mDriver.device.productId != Constants.DEVICE_PRODUCT_ID || mDriver.device.vendorId != Constants.DEVICE_VENDOR_ID){
Toast.makeText(this, "Device Connected is not supported", Toast.LENGTH_SHORT).show()
onBackPressed()
return
}
mConnection = manager.openDevice(mDriver.device) mConnection = manager.openDevice(mDriver.device)
if (mConnection == null) { if (mConnection == null) {