in health-services/PassiveData/app/src/main/java/com/example/passivedata/MainActivity.kt [43:88]
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")
viewModel.togglePassiveData(true)
}
false -> {
Log.i(TAG, "Body sensors permission not granted")
viewModel.togglePassiveData(false)
}
}
}
binding.enablePassiveData.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
// Make sure we have the necessary permission first.
permissionLauncher.launch(android.Manifest.permission.BODY_SENSORS)
} else {
viewModel.togglePassiveData(false)
}
}
// Bind viewmodel state to the UI.
lifecycleScope.launchWhenStarted {
viewModel.uiState.collect {
updateViewVisiblity(it)
}
}
lifecycleScope.launchWhenStarted {
viewModel.latestHeartRate.collect {
binding.lastMeasuredValue.text = it.toString()
}
}
lifecycleScope.launchWhenStarted {
viewModel.passiveDataEnabled.collect {
binding.enablePassiveData.isChecked = it
}
}
}