Improve views

This commit is contained in:
Sylwester Zieliński
2021-12-02 13:22:26 +01:00
parent 10b0573d6e
commit 4d15ada6eb
14 changed files with 80 additions and 19 deletions

View File

@@ -26,6 +26,7 @@ import android.bluetooth.BluetoothGatt
import android.bluetooth.BluetoothGattCharacteristic
import android.content.Context
import android.util.Log
import dagger.hilt.android.qualifiers.ApplicationContext
import no.nordicsemi.android.ble.common.callback.bps.BloodPressureMeasurementDataCallback
import no.nordicsemi.android.ble.common.callback.bps.IntermediateCuffPressureDataCallback
import no.nordicsemi.android.ble.common.profile.bp.BloodPressureTypes
@@ -34,6 +35,8 @@ import no.nordicsemi.android.bps.data.BPSDataHolder
import no.nordicsemi.android.log.LogContract
import no.nordicsemi.android.service.BatteryManager
import java.util.*
import javax.inject.Inject
import javax.inject.Singleton
/** Blood Pressure service UUID. */
val BPS_SERVICE_UUID = UUID.fromString("00001810-0000-1000-8000-00805f9b34fb")
@@ -44,7 +47,11 @@ private val BPM_CHARACTERISTIC_UUID = UUID.fromString("00002A35-0000-1000-8000-0
/** Intermediate Cuff Pressure characteristic UUID. */
private val ICP_CHARACTERISTIC_UUID = UUID.fromString("00002A36-0000-1000-8000-00805f9b34fb")
internal class BPSManager(context: Context, private val dataHolder: BPSDataHolder) : BatteryManager(context) {
@Singleton
internal class BPSManager @Inject constructor(
@ApplicationContext context: Context,
private val dataHolder: BPSDataHolder
) : BatteryManager(context) {
private var bpmCharacteristic: BluetoothGattCharacteristic? = null
private var icpCharacteristic: BluetoothGattCharacteristic? = null

View File

@@ -1,8 +1,10 @@
package no.nordicsemi.android.bps.view
import android.util.Log
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -16,9 +18,10 @@ import no.nordicsemi.android.bps.data.BPSData
@Composable
internal fun BPSContentView(state: BPSData, onEvent: (BPSScreenViewEvent) -> Unit) {
Column(
horizontalAlignment = Alignment.CenterHorizontally
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.padding(16.dp)
) {
Spacer(modifier = Modifier.height(16.dp))
Log.d("AAATESTAAA", "state: $state")
BPSSensorsReadingView(state = state)

View File

@@ -2,6 +2,7 @@ package no.nordicsemi.android.bps.view
import androidx.compose.foundation.layout.Column
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.ui.res.stringResource
import androidx.hilt.navigation.compose.hiltViewModel
@@ -16,6 +17,16 @@ fun BPSScreen(finishAction: () -> Unit) {
val state = viewModel.state.collectAsState().value
val isScreenActive = viewModel.isActive.collectAsState().value
LaunchedEffect("connect") {
viewModel.connectDevice()
}
LaunchedEffect(isScreenActive) {
if (!isScreenActive) {
finishAction()
}
}
BPSView(state) { viewModel.onEvent(it) }
}

View File

@@ -13,11 +13,14 @@ import no.nordicsemi.android.bps.data.BPSData
import no.nordicsemi.android.theme.view.BatteryLevelView
import no.nordicsemi.android.theme.view.KeyValueField
import no.nordicsemi.android.theme.view.ScreenSection
import no.nordicsemi.android.theme.view.SectionTitle
@Composable
internal fun BPSSensorsReadingView(state: BPSData) {
ScreenSection {
Column {
SectionTitle(resId = R.drawable.ic_records, title = "Records")
Spacer(modifier = Modifier.height(16.dp))
KeyValueField(stringResource(id = R.string.bps_systolic), state.displaySystolic())
Spacer(modifier = Modifier.height(4.dp))
KeyValueField(stringResource(id = R.string.bps_diastolic), state.displayDiastolic())

View File

@@ -2,14 +2,18 @@ package no.nordicsemi.android.bps.viewmodel
import dagger.hilt.android.lifecycle.HiltViewModel
import no.nordicsemi.android.bps.data.BPSDataHolder
import no.nordicsemi.android.bps.repository.BPSManager
import no.nordicsemi.android.bps.view.BPSScreenViewEvent
import no.nordicsemi.android.bps.view.DisconnectEvent
import no.nordicsemi.android.service.SelectedBluetoothDeviceHolder
import no.nordicsemi.android.theme.viewmodel.CloseableViewModel
import no.nordicsemi.android.utils.exhaustive
import javax.inject.Inject
@HiltViewModel
internal class BPSViewModel @Inject constructor(
private val bpsManager: BPSManager,
private val deviceHolder: SelectedBluetoothDeviceHolder,
private val dataHolder: BPSDataHolder
) : CloseableViewModel() {
@@ -21,8 +25,18 @@ internal class BPSViewModel @Inject constructor(
}.exhaustive
}
fun connectDevice() {
deviceHolder.device?.let {
bpsManager.connect(it)
.useAutoConnect(false)
.retry(3, 100)
.enqueue()
}
}
private fun onDisconnectButtonClick() {
finish()
deviceHolder.forgetDevice()
dataHolder.clear()
}
}