in health-services/ExerciseSample/app/src/main/java/com/example/exercise/ExerciseFragment.kt [81:124]
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.startEndButton.setOnClickListener {
startEndExercise()
}
binding.pauseResumeButton.setOnClickListener {
pauseResumeExercise()
}
viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
val capabilities =
healthServicesManager.getExerciseCapabilities() ?: return@repeatOnLifecycle
val supportedTypes = capabilities.supportedDataTypes
// Set enabled state for relevant text elements.
binding.heartRateText.isEnabled = DataType.HEART_RATE_BPM in supportedTypes
binding.caloriesText.isEnabled = DataType.TOTAL_CALORIES in supportedTypes
binding.distanceText.isEnabled = DataType.DISTANCE in supportedTypes
binding.lapsText.isEnabled = true
}
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.keyPressFlow.collect {
healthServicesManager.markLap()
}
}
}
// Ambient Mode
ambientModeHandler = AmbientModeHandler()
ambientController = AmbientModeSupport.attach(requireActivity())
viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.ambientEventFlow.collect {
ambientModeHandler.onAmbientEvent(it)
}
}
}
// Bind to our service. Views will only update once we are connected to it.
ExerciseService.bindService(requireContext().applicationContext, serviceConnection)
bindViewsToService()
}