in health-services/MeasureData/app/src/main/java/com/example/measuredata/MainActivity.kt [43:82]
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
permissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) { result ->
when (result) {
true -> {
Log.i(TAG, "Body sensors permission granted")
// Only measure while the activity is at least in STARTED state.
// MeasureClient provides frequent updates, which requires increasing the
// sampling rate of device sensors, so we must be careful not to remain
// registered any longer than necessary.
lifecycleScope.launchWhenStarted {
viewModel.measureHeartRate()
}
}
false -> Log.i(TAG, "Body sensors permission not granted")
}
}
// Bind viewmodel state to the UI.
lifecycleScope.launchWhenStarted {
viewModel.uiState.collect {
updateViewVisiblity(it)
}
}
lifecycleScope.launchWhenStarted {
viewModel.heartRateAvailable.collect {
binding.statusText.text = getString(R.string.measure_status, it)
}
}
lifecycleScope.launchWhenStarted {
viewModel.heartRateBpm.collect {
binding.lastMeasuredValue.text = String.format("%.1f", it)
}
}
}