בדוגמה הבאה מוסבר איך לקרוא נתונים גולמיים כחלק מתהליך העבודה הנפוץ.
קריאת נתונים
Health Connect מאפשר לאפליקציות לקרוא נתונים מאחסון הנתונים כשהן בחזית וברקע:
קריאה בחזית: בדרך כלל אפשר לקרוא נתונים מ-Health Connect כשהאפליקציה נמצאת בחזית. במקרים כאלה, מומלץ להשתמש בשירות בחזית כדי להריץ את הפעולה הזו, למקרה שהמשתמש או המערכת יעבירו את האפליקציה לרקע במהלך פעולת קריאה.
קריאה ברקע: אם מבקשים מהמשתמש הרשאה נוספת, אפשר לקרוא נתונים אחרי שהמשתמש או המערכת מעבירים את האפליקציה לרקע. דוגמה מלאה לקריאה ברקע
סוג הנתונים 'צעדים' ב-Health Connect מתעד את מספר הצעדים שהמשתמש צעד בין שתי מדידות. ספירת הצעדים היא מדידה נפוצה בפלטפורמות בריאות, כושר ואיכות חיים. עם Health Connect, קל לקרוא ולכתוב נתונים של מספר הצעדים.
כדי לקרוא רשומות, יוצרים ReadRecordsRequest
ומספקים אותו בקריאה ל-readRecords
.
בדוגמה הבאה מוסבר איך לקרוא נתונים של מספר הצעדים של משתמש בפרק זמן מסוים. דוגמה מורחבת עם SensorManager
מופיעה במדריך הנתונים של ספירת השלבים.
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
}
}
דוגמה לקריאה ברקע
כדי לקרוא נתונים ברקע, צריך להצהיר על ההרשאה הבאה בקובץ המניפסט:
<application>
<uses-permission android:name="android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND" />
...
</application>
הדוגמה הבאה מראה איך לקרוא את נתוני ספירת הצעדים ברקע עבור משתמש בפרק זמן מסוים באמצעות WorkManager
:
class ScheduleWorker(private val appContext: Context, workerParams: WorkerParameters):
CoroutineWorker(appContext, workerParams) {
override suspend fun doWork(): Result {
// Read data and process it.
...
// Return success indicating successful data retrieval
return Result.success()
}
}
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_READ_HEALTH_DATA_IN_BACKGROUND
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Check if necessary permission is granted
val grantedPermissions = healthConnectClient.permissionController.getGrantedPermissions()
if (PERMISSION_READ_HEALTH_DATA_IN_BACKGROUND !in grantedPermissions) {
// Perform read in foreground
...
} else {
// Schedule the periodic work request in background
val periodicWorkRequest = PeriodicWorkRequestBuilder<ScheduleWorker>(1, TimeUnit.HOURS)
.build()
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"read_health_connect",
ExistingPeriodicWorkPolicy.KEEP,
periodicWorkRequest
)
}
} else {
// Background reading is not available, perform read in foreground
...
}
קריאת נתונים שנכתבו בעבר
אם אפליקציה כתבה בעבר רשומות ב-Health Connect, היא יכולה לקרוא אותן חזרה בלי שתצטרך הרשאת קריאה לרשומות הספציפיות האלה. האפשרות הזו רלוונטית בתרחישים שבהם צריך לסנכרן מחדש את האפליקציה עם Health Connect אחרי שהמשתמש מתקין אותה מחדש.
כדי לקרוא נתונים בתרחיש הזה, צריך לציין את שם החבילה כאובייקט DataOrigin
בפרמטר dataOriginFilter
של ReadRecordsRequest
.
הדוגמה הבאה מראה איך לציין שם של חבילת נתונים בזמן קריאת רשומות של שלבים:
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
}
הגבלות קריאה
כברירת מחדל, האפליקציה יכולה לקרוא נתונים עד 30 יום באמצעות כל ההרשאות שהוקצו לה.
ההרשאה PERMISSION_READ_HEALTH_DATA_HISTORY
מאפשרת לאפליקציה לקרוא נתונים שנאספו לפני יותר מ-30 יום.
הגבלה ל-30 יום
מערכת Health Connect יכולה לקרוא נתונים מ-30 הימים שלפני ההרשאה הראשונה שניתנה.
עם זאת, אם משתמש ימחק את האפליקציה, היסטוריית ההרשאות תימחק. אם המשתמש יתקין מחדש את האפליקציה ויעניק שוב הרשאה, האפליקציה תוכל לקרוא נתונים מ-Health Connect עד 30 יום לפני התאריך החדש הזה.
דוגמה ל-30 יום
אם משתמש העניק לאפליקציה הרשאת קריאה בפעם הראשונה ב-30 במרץ 2023, הנתונים המוקדם ביותר שהאפליקציה תוכל לקרוא חזרה יהיו מ-28 בפברואר 2023 ואילך.
אחר כך המשתמש ימחק את האפליקציה ב-10 במאי 2023. המשתמש מחליט להתקין אותה מחדש ב-15 במאי 2023 ולהעניק הרשאת קריאה. התאריך המוקדם ביותר שהאפליקציה יכולה לקרוא נתונים ממנו הוא 15 באפריל 2023.
קריאת נתונים מלפני יותר מ-30 יום
אם רוצים לקרוא נתונים מלפני יותר מ-30 יום, צריך להשתמש בהרשאה PERMISSION_READ_HEALTH_DATA_HISTORY
. ללא ההרשאה הזו, ניסיון לקרוא רשומה אחת שחלפו עליה יותר מ-30 ימים יוביל לשגיאה.
בנוסף, אי אפשר לקרוא נתונים מלפני יותר מ-30 יום באמצעות אחת מהבקשות של טווח הזמן.