Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Health Connect client version to 1.1.0-alpha12 #324

Merged
merged 2 commits into from
Feb 27, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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(),
Expand All @@ -159,20 +160,23 @@ 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(),
endZoneOffset = end.offset,
count = (1000 + 1000 * Random.nextInt(3)).toLong()
),
DistanceRecord(
metadata = Metadata.manualEntry(),
startTime = start.toInstant(),
startZoneOffset = start.offset,
endTime = end.toInstant(),
endZoneOffset = end.offset,
distance = Length.meters((1000 + 100 * Random.nextInt(20)).toDouble())
),
TotalCaloriesBurnedRecord(
metadata = Metadata.manualEntry(),
startTime = start.toInstant(),
startZoneOffset = start.offset,
endTime = end.toInstant(),
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -479,14 +484,14 @@ class HealthConnectManager(private val context: Context) {
time = time.plusSeconds(30)
}
return HeartRateRecord(
metadata = Metadata.manualEntry(),
startTime = sessionStartTime.toInstant(),
startZoneOffset = sessionStartTime.offset,
endTime = sessionEndTime.toInstant(),
endZoneOffset = sessionEndTime.offset,
samples = samples)
}

@OptIn(ExperimentalFeatureAvailabilityApi::class)
fun isFeatureAvailable(feature: Int): Boolean{
return healthConnectClient
.features
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions health-connect/HealthConnectSample/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ 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 {
google()
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
Expand Down
Loading