Odczyt nieprzetworzonych danych

Na przykładzie poniżej pokazujemy, jak odczytywać nieprzetworzone dane w ramach standardowego przepływu pracy.

Prosty sposób czytania

Typ danych Kroki w Health Connect rejestruje liczbę kroków wykonanych przez użytkownika między odczytami. Liczba kroków to wspólny pomiar dla platform z zakresu zdrowia, fitnessu i samopoczucia. Health Connect ułatwia odczyt i zapis danych o liczbie kroków.

Aby odczytywać rekordy, utwórz ReadRecordsRequest i podaj go podczas wywoływania readRecords.

Przykład poniżej pokazuje, jak odczytywać dane o liczbie kroków użytkownika w określonym czasie. Rozszerzony przykład z użyciem funkcji SensorManager znajdziesz w przewodniku po danych Liczba kroków.

suspend fun readStepsByTimeRange(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    try {
        val response = healthConnectClient.readRecords(
            ReadRecordsRequest(
                StepsRecord::class,
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
            )
        )
        for (stepRecord in response.records) {
            // Process each step record
        }
    } catch (e: Exception) {
        // Run error handling here
    }
}

Odczytanie wcześniej zapisanych danych

Jeśli aplikacja zapisywała już dane w Health Connect, może je odczytać bez konieczności uzyskania uprawnień do odczytu tych rekordów. Dotyczy to sytuacji, w których po ponownym zainstalowaniu aplikacji przez użytkownika musi się ona ponownie zsynchronizować z Health Connect.

Aby odczytać dane w tym scenariuszu, musisz wskazać nazwę pakietu jako obiekt DataOrigin w parametrze dataOriginFilter ReadRecordsRequest.

Z przykładu poniżej dowiesz się, jak wskazać nazwę pakietu podczas odczytywania rekordu kroków:

try {
    val response =  healthConnectClient.readRecords(
        ReadRecordsRequest(
            recordType = StepsRecord::class,
            timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
            dataOriginFilter = setOf(DataOrigin("com.my.package.name"))
        )
    )
    for (record in response.records) {
        // Process each record
    }
} catch (e: Exception) {
    // Run error handling here
}

Ograniczenie odczytu w ciągu 30 dni

Health Connect może odczytywać dane przez maksymalnie 30 dni przed przyznaniem pierwszego uprawnienia.

Jeśli jednak użytkownik usunie aplikację, historia uprawnień zostanie utracona. Jeśli użytkownik ponownie zainstaluje aplikację i ponownie przyzna jej uprawnienia, będzie mogła odczytywać dane z Health Connect na maksymalnie 30 dni przed tą nową datą.

Przykład

Jeśli 30 marca 2023 r. użytkownik po raz pierwszy przyznał Twojej aplikacji uprawnienia do odczytu, najwcześniejsze dane, jakie może ona odczytać, będą miały miejsce od 28 lutego 2023 r.

10 maja 2023 r. użytkownik usunie Twoją aplikację. Użytkownik postanawia ponownie zainstalować ją 15 maja 2023 r. i przyznać uprawnienia do odczytu. Najwcześniejsza data, od której aplikacja może odczytywać dane, to 15 kwietnia 2023 r.

Ograniczenia na pierwszym planie

Odczytywanie danych z Health Connect jest ograniczone do aplikacji działających na pierwszym planie. To ograniczenie zostało wprowadzone, aby jeszcze lepiej chronić prywatność użytkowników. Dzięki temu użytkownicy zyskują pewność, że Health Connect nie ma dostępu do danych w tle z odczytem, a dane są dostępne tylko do odczytu i dostępu do nich na pierwszym planie.

W sytuacjach, w których przerwy w działaniu są tolerowane, takie jak wyświetlanie odczytu w aplikacji, odczytuj je bezpośrednio z Health Connect do aplikacji klienckiej.

W sytuacjach, w których nie chcesz przerywać działania, na przykład odczytać zakres danych z Health Connect, a potem zapisać je i przesłać w innym miejscu, zamiast Aktywności, w której można je szybko zamknąć, użyj ForegroundService.