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 {
// var usbConnected: Boolean = false
val usbConnected = MutableLiveData(false)
// val usbConnected = MutableLiveData(false)
val usbConnected = MutableLiveData(true)
var isStoragePermissionGranted = 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 = 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 WAVELENGTH_OF_INTEREST_ONE = 427
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.Intent
import android.content.IntentFilter
import android.hardware.usb.UsbDevice
import android.hardware.usb.UsbManager
import android.os.Bundle
import android.util.Log
import android.view.Gravity
import android.view.Menu
import android.widget.Toast
@@ -15,9 +17,11 @@ import androidx.core.view.get
import androidx.lifecycle.ViewModelProvider
import com.example.hpos.R
import com.example.hpos.data.DataHolder
import com.example.hpos.data.constant.Constants
import com.example.hpos.databinding.ActivityMainBinding
import com.example.hpos.presentation.testRight.TestRightActivity
import com.example.hpos.util.MyViewModelFactory
import com.hoho.android.usbserial.driver.UsbSerialProber
class MainActivity : AppCompatActivity()
@@ -64,6 +68,21 @@ class MainActivity : AppCompatActivity()
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() {
binding.cvItem1.setOnClickListener {
@@ -76,11 +95,12 @@ class MainActivity : AppCompatActivity()
}
DataHolder.usbConnected.observe(this){
// Log.d(TAG, "usbConnected observer called with value -> $it")
if (it){
myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24)
} else {
// Log.d(TAG, "into no block -> $it")
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 {
menuInflater.inflate(R.menu.my_menu, menu)
myMenu = menu
DataHolder.usbConnected.value = DataHolder.usbConnected.value
checkAndUpdateUsbConnection()
return true
}

View File

@@ -88,12 +88,13 @@ class TestRightActivity : AppCompatActivity() {
private fun setupListener() {
DataHolder.usbConnected.observe(this){
Log.d("USB OBSERVE", "testrightactivity called -> $it")
if (it){
myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24)
} else {
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)
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")
} else {
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)
if (mConnection == null) {