diff --git a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt index 2ed6077..9b5499f 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt @@ -78,11 +78,11 @@ class DiagnosticsFragment : Fragment() { binding.btnSubmit.setOnClickListener { binding.btnSubmit.visibility = View.GONE runDeviceDiagnostics() - val batteryLevel = "" //diagnosticsViewModel.getBatteryLevel().toString() - val batteryCapacity = "" //context?.let { diagnosticsViewModel.getBatteryCapacity(it).toString() } - val batteryMaxCapacity = "" //context?.let { diagnosticsViewModel.getBatteryMaxCapacity(it).toString() } - val batteryTemperature = "" //diagnosticsViewModel.getBatteryTemperature().toString() - val batteryVoltage = "" // context?.let { diagnosticsViewModel.getBatteryVoltage(it).toString() } + val batteryLevel = diagnosticsViewModel.getBatteryLevel().toString() + val batteryCapacity = context?.let { diagnosticsViewModel.getBatteryCapacity(it).toString() } + val batteryMaxCapacity = context?.let { diagnosticsViewModel.getBatteryMaxCapacity(it).toString() } + val batteryTemperature = diagnosticsViewModel.getBatteryTemperature().toString() + val batteryVoltage = context?.let { diagnosticsViewModel.getBatteryVoltage(it).toString() } val additionalDetails = AdditionalDetails( batteryLevel = batteryLevel, diff --git a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsViewModel.kt index 465eb6b..470e709 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsViewModel.kt @@ -13,6 +13,10 @@ package com.example.hpostesting.presentation.diagnostics +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.BatteryManager import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -30,7 +34,7 @@ import javax.inject.Inject @HiltViewModel class DiagnosticsViewModel @Inject constructor( private val repository: Repository, -// context: Context, + context: Context, ) : ViewModel() { var isServiceConnected = false val progressBar = MutableLiveData(false) @@ -39,10 +43,10 @@ class DiagnosticsViewModel @Inject constructor( val deviceData = MutableLiveData() val fireBaseUpload = MutableLiveData() val deviceDiagnosticsResponse = MutableLiveData>() -// private val batteryStatus: Intent? = -// IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter -> -// context.registerReceiver(null, ifilter) -// } + private val batteryStatus: Intent? = + IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter -> + context.registerReceiver(null, ifilter) + } fun addDiagnosticsDataToDb(data: DiagnosticsData) { viewModelScope.launch { try { @@ -75,71 +79,71 @@ class DiagnosticsViewModel @Inject constructor( } -// fun getBatteryLevel(): Float? { -// val batteryPct: Float? = batteryStatus?.let { intent -> -// val level: Int = -// intent.getIntExtra( -// BatteryManager.EXTRA_LEVEL, -// -1 -// ) -// val scale: Int = -// intent.getIntExtra( -// BatteryManager.EXTRA_SCALE, -// -1 -// ) -// level * 100 / scale.toFloat() -// } -// -// return batteryPct -// } -// -// fun getBatteryTemperature(): Float? { -// val batteryTemp: Float? = batteryStatus?.let { intent -> -// val temperature = intent.getIntExtra( -// BatteryManager.EXTRA_TEMPERATURE, -// 0 -// ) -// temperature.toFloat() / 10 -// } -// -// return batteryTemp -// } -// -// fun getBatteryVoltage(context: Context): Float { -// val batteryIntent = -// context.registerReceiver( -// null, -// IntentFilter(Intent.ACTION_BATTERY_CHANGED) -// ) -// val voltage = batteryIntent?.getIntExtra( -// BatteryManager.EXTRA_VOLTAGE, -// 0 -// ) ?: 0 -// -// // milli-volts to volts -// return voltage.toFloat() / 1000 -// } -// -// -// fun getBatteryCapacity(context: Context): Int { -// val batteryManager = -// context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager -// val currentCapacity = -// batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER) -// -// return currentCapacity -// } -// -// fun getBatteryMaxCapacity(context: Context): Float { -// val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager -// val designCapacity = -// batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) -// val currentCapacity = -// batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER) -// -// // Calculate the estimated maximum battery capacity in mAh -// val maxCapacity = currentCapacity.toFloat() / designCapacity.toFloat() * 100 -// -// return maxCapacity -// } + fun getBatteryLevel(): Float? { + val batteryPct: Float? = batteryStatus?.let { intent -> + val level: Int = + intent.getIntExtra( + BatteryManager.EXTRA_LEVEL, + -1 + ) + val scale: Int = + intent.getIntExtra( + BatteryManager.EXTRA_SCALE, + -1 + ) + level * 100 / scale.toFloat() + } + + return batteryPct + } + + fun getBatteryTemperature(): Float? { + val batteryTemp: Float? = batteryStatus?.let { intent -> + val temperature = intent.getIntExtra( + BatteryManager.EXTRA_TEMPERATURE, + 0 + ) + temperature.toFloat() / 10 + } + + return batteryTemp + } + + fun getBatteryVoltage(context: Context): Float { + val batteryIntent = + context.registerReceiver( + null, + IntentFilter(Intent.ACTION_BATTERY_CHANGED) + ) + val voltage = batteryIntent?.getIntExtra( + BatteryManager.EXTRA_VOLTAGE, + 0 + ) ?: 0 + + // milli-volts to volts + return voltage.toFloat() / 1000 + } + + + fun getBatteryCapacity(context: Context): Int { + val batteryManager = + context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager + val currentCapacity = + batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER) + + return currentCapacity + } + + fun getBatteryMaxCapacity(context: Context): Float { + val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager + val designCapacity = + batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) + val currentCapacity = + batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER) + + // Calculate the estimated maximum battery capacity in mAh + val maxCapacity = currentCapacity.toFloat() / designCapacity.toFloat() * 100 + + return maxCapacity + } } \ No newline at end of file diff --git a/app/src/test/java/com/example/hpostesting/DiagnosticsViewModelTest.kt b/app/src/test/java/com/example/hpostesting/DiagnosticsViewModelTest.kt index 0f6b453..522ff26 100644 --- a/app/src/test/java/com/example/hpostesting/DiagnosticsViewModelTest.kt +++ b/app/src/test/java/com/example/hpostesting/DiagnosticsViewModelTest.kt @@ -13,11 +13,13 @@ package com.example.hpostesting +import android.content.Context import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.lifecycle.Observer import com.example.hpostesting.data.model.Response import com.example.hpostesting.data.model.diagnostics.DiagnosticsData import com.example.hpostesting.data.repository.Repository +import com.example.hpostesting.presentation.diagnostics.DiagnosticsActivity import com.example.hpostesting.presentation.diagnostics.DiagnosticsViewModel import io.mockk.coEvery import io.mockk.mockk @@ -49,7 +51,8 @@ class DiagnosticsViewModelTest { // Mock Repository private val mockRepository = mockk() - + @Mock + private lateinit var context: Context // Mock Observer for LiveData @Mock private lateinit var mockObserver: Observer @@ -63,7 +66,7 @@ class DiagnosticsViewModelTest { MockitoAnnotations.openMocks(this) // Create the ViewModel with the mock repository and set the coroutine dispatcher - diagnosticsViewModel = DiagnosticsViewModel(repository = mockRepository) + diagnosticsViewModel = DiagnosticsViewModel(repository = mockRepository, context = context) // diagnosticsViewModel.viewModelScope = testCoroutineScope // Observe the LiveData