From 35773f671030c4e8b626bba88dc3c163dbe60823 Mon Sep 17 00:00:00 2001 From: weichenc Date: Tue, 18 Feb 2025 13:44:00 +0800 Subject: [PATCH 1/2] update fradle version to 8.7.3 --- health-connect/HealthConnectSample/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/health-connect/HealthConnectSample/build.gradle b/health-connect/HealthConnectSample/build.gradle index 0008f59..1a986ba 100644 --- a/health-connect/HealthConnectSample/build.gradle +++ b/health-connect/HealthConnectSample/build.gradle @@ -30,7 +30,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.7.1' + classpath 'com.android.tools.build:gradle:8.7.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong From 47f0144f6e994f7831a41499843a0f6a9d87cb75 Mon Sep 17 00:00:00 2001 From: weichenc Date: Tue, 18 Feb 2025 16:21:00 +0800 Subject: [PATCH 2/2] update health connect client version to Version 1.1.0-alpha12 --- .../healthconnectsample/data/HealthConnectManager.kt | 9 +++++++-- .../healthconnectsample/presentation/component/Series.kt | 2 ++ .../presentation/navigation/HealthConnectNavigation.kt | 4 ++-- .../presentation/screen/WelcomeScreen.kt | 2 +- .../screen/exercisesession/ExerciseSessionViewModel.kt | 2 -- .../screen/inputreadings/InputReadingsViewModel.kt | 2 ++ .../presentation/screen/recordlist/RecordListScreen.kt | 3 ++- health-connect/HealthConnectSample/build.gradle | 2 +- 8 files changed, 17 insertions(+), 9 deletions(-) diff --git a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/data/HealthConnectManager.kt b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/data/HealthConnectManager.kt index d40f0ba..b4d30df 100644 --- a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/data/HealthConnectManager.kt +++ b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/data/HealthConnectManager.kt @@ -27,7 +27,6 @@ import androidx.health.connect.client.HealthConnectClient.Companion.SDK_UNAVAILA import androidx.health.connect.client.HealthConnectFeatures import androidx.health.connect.client.PermissionController import androidx.health.connect.client.changes.Change -import androidx.health.connect.client.feature.ExperimentalFeatureAvailabilityApi import androidx.health.connect.client.records.DistanceRecord import androidx.health.connect.client.records.ExerciseSessionRecord import androidx.health.connect.client.records.HeartRateRecord @@ -37,6 +36,7 @@ import androidx.health.connect.client.records.SpeedRecord import androidx.health.connect.client.records.StepsRecord import androidx.health.connect.client.records.TotalCaloriesBurnedRecord import androidx.health.connect.client.records.WeightRecord +import androidx.health.connect.client.records.metadata.Metadata import androidx.health.connect.client.request.AggregateRequest import androidx.health.connect.client.request.ChangesTokenRequest import androidx.health.connect.client.request.ReadRecordsRequest @@ -151,6 +151,7 @@ class HealthConnectManager(private val context: Context) { return healthConnectClient.insertRecords( listOf( ExerciseSessionRecord( + metadata = Metadata.manualEntry(), startTime = start.toInstant(), startZoneOffset = start.offset, endTime = end.toInstant(), @@ -159,6 +160,7 @@ class HealthConnectManager(private val context: Context) { title = "My Run #${Random.nextInt(0, 60)}" ), StepsRecord( + metadata = Metadata.manualEntry(), startTime = start.toInstant(), startZoneOffset = start.offset, endTime = end.toInstant(), @@ -166,6 +168,7 @@ class HealthConnectManager(private val context: Context) { count = (1000 + 1000 * Random.nextInt(3)).toLong() ), DistanceRecord( + metadata = Metadata.manualEntry(), startTime = start.toInstant(), startZoneOffset = start.offset, endTime = end.toInstant(), @@ -173,6 +176,7 @@ class HealthConnectManager(private val context: Context) { distance = Length.meters((1000 + 100 * Random.nextInt(20)).toDouble()) ), TotalCaloriesBurnedRecord( + metadata = Metadata.manualEntry(), startTime = start.toInstant(), startZoneOffset = start.offset, endTime = end.toInstant(), @@ -279,6 +283,7 @@ class HealthConnectManager(private val context: Context) { .withHour(Random.nextInt(19, 22)) .withMinute(Random.nextInt(0, 60)) val sleepSession = SleepSessionRecord( + metadata = Metadata.manualEntry(), notes = notes[Random.nextInt(0, notes.size)], startTime = bedtime.toInstant(), startZoneOffset = bedtime.offset, @@ -479,6 +484,7 @@ class HealthConnectManager(private val context: Context) { time = time.plusSeconds(30) } return HeartRateRecord( + metadata = Metadata.manualEntry(), startTime = sessionStartTime.toInstant(), startZoneOffset = sessionStartTime.offset, endTime = sessionEndTime.toInstant(), @@ -486,7 +492,6 @@ class HealthConnectManager(private val context: Context) { samples = samples) } - @OptIn(ExperimentalFeatureAvailabilityApi::class) fun isFeatureAvailable(feature: Int): Boolean{ return healthConnectClient .features diff --git a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/component/Series.kt b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/component/Series.kt index 3e587b3..1611e30 100644 --- a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/component/Series.kt +++ b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/component/Series.kt @@ -33,6 +33,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.health.connect.client.records.HeartRateRecord import androidx.health.connect.client.records.SpeedRecord +import androidx.health.connect.client.records.metadata.Metadata import com.example.healthconnectsample.R import com.example.healthconnectsample.data.dateTimeWithOffsetOrDefault import com.example.healthconnectsample.presentation.theme.HealthConnectTheme @@ -142,6 +143,7 @@ fun HeartRateSeriesPreview() { labelId = R.string.hr_series, series = listOf( HeartRateRecord( + metadata = Metadata.manualEntry(), startTime = time2, startZoneOffset = ZoneId.systemDefault().rules.getOffset(time2), endTime = time1, diff --git a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/navigation/HealthConnectNavigation.kt b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/navigation/HealthConnectNavigation.kt index 7fa1532..9043f80 100644 --- a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/navigation/HealthConnectNavigation.kt +++ b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/navigation/HealthConnectNavigation.kt @@ -146,8 +146,8 @@ fun HealthConnectNavigation( permissionsGranted = permissionsGranted, sessionMetrics = sessionMetrics, uiState = viewModel.uiState, - onDetailsClick = { recordType, uid, seriesRecordsType -> - navController.navigate(Screen.RecordListScreen.route + "/" + recordType + "/"+ uid + "/" + seriesRecordsType) + onDetailsClick = { recordType, recordId, seriesRecordsType -> + navController.navigate(Screen.RecordListScreen.route + "/" + recordType + "/"+ recordId + "/" + seriesRecordsType) }, onError = { exception -> showExceptionSnackbar(scaffoldState, scope, exception) diff --git a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/WelcomeScreen.kt b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/WelcomeScreen.kt index 947834c..f77d07f 100644 --- a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/WelcomeScreen.kt +++ b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/WelcomeScreen.kt @@ -31,7 +31,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -42,6 +41,7 @@ import androidx.health.connect.client.HealthConnectClient.Companion.SDK_UNAVAILA import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.compose.LocalLifecycleOwner import com.example.healthconnectsample.R import com.example.healthconnectsample.presentation.component.InstalledMessage import com.example.healthconnectsample.presentation.component.NotInstalledMessage diff --git a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/exercisesession/ExerciseSessionViewModel.kt b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/exercisesession/ExerciseSessionViewModel.kt index 6e3b7a5..2a3954c 100644 --- a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/exercisesession/ExerciseSessionViewModel.kt +++ b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/exercisesession/ExerciseSessionViewModel.kt @@ -21,7 +21,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.health.connect.client.HealthConnectFeatures -import androidx.health.connect.client.feature.ExperimentalFeatureAvailabilityApi import androidx.health.connect.client.permission.HealthPermission import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_HEALTH_DATA_IN_BACKGROUND import androidx.health.connect.client.records.DistanceRecord @@ -140,7 +139,6 @@ class ExerciseSessionViewModel(private val healthConnectManager: HealthConnectMa * Where an error is caught, of the type Health Connect is known to throw, [uiState] is set to * [UiState.Error], which results in the snackbar being used to show the error message. */ - @OptIn(ExperimentalFeatureAvailabilityApi::class) private suspend fun tryWithPermissionsCheck(block: suspend () -> Unit) { permissionsGranted.value = healthConnectManager.hasAllPermissions(permissions) backgroundReadAvailable.value = healthConnectManager.isFeatureAvailable( diff --git a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/inputreadings/InputReadingsViewModel.kt b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/inputreadings/InputReadingsViewModel.kt index 65681e4..2f4fafc 100644 --- a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/inputreadings/InputReadingsViewModel.kt +++ b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/inputreadings/InputReadingsViewModel.kt @@ -22,6 +22,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.health.connect.client.permission.HealthPermission import androidx.health.connect.client.records.WeightRecord +import androidx.health.connect.client.records.metadata.Metadata import androidx.health.connect.client.units.Mass import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider @@ -71,6 +72,7 @@ class InputReadingsViewModel(private val healthConnectManager: HealthConnectMana tryWithPermissionsCheck { val time = ZonedDateTime.now().withNano(0) val weight = WeightRecord( + metadata = Metadata.manualEntry(), weight = Mass.kilograms(inputValue), time = time.toInstant(), zoneOffset = time.offset diff --git a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/recordlist/RecordListScreen.kt b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/recordlist/RecordListScreen.kt index adad969..b856792 100644 --- a/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/recordlist/RecordListScreen.kt +++ b/health-connect/HealthConnectSample/app/src/main/java/com/example/healthconnectsample/presentation/screen/recordlist/RecordListScreen.kt @@ -160,12 +160,13 @@ fun RecordListScreen( private fun buildStepsSeries(sessionStartTime: ZonedDateTime, sessionEndTime: ZonedDateTime) = StepsRecord( + metadata = Metadata.manualEntry(), startTime = sessionStartTime.toInstant(), startZoneOffset = sessionStartTime.offset, endTime = sessionEndTime.toInstant(), endZoneOffset = sessionEndTime.offset, count = Random.nextInt(9000).toLong() + 1000, - metadata = Metadata(id = UUID.randomUUID().toString())) + ) fun LazyListScope.renderData( record: Record, diff --git a/health-connect/HealthConnectSample/build.gradle b/health-connect/HealthConnectSample/build.gradle index 1a986ba..7a2d215 100644 --- a/health-connect/HealthConnectSample/build.gradle +++ b/health-connect/HealthConnectSample/build.gradle @@ -22,7 +22,7 @@ buildscript { navigation_compose_version = '2.8.2' concurrent_futures_version = '1.2.0' - health_connect_version = '1.1.0-alpha11' + health_connect_version = '1.1.0-alpha12' lifecycle_version = '2.8.6' } repositories {