בדוגמה הבאה מוסבר איך לקרוא נתונים גולמיים כחלק מתהליך העבודה הנפוץ.
קריאת נתונים
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 יום
Health Connect יכולה לקרוא נתונים עד 30 ימים לפני התאריך שבו ניתנה הרשאה כלשהי.
עם זאת, אם משתמש ימחק את האפליקציה, היסטוריית ההרשאות תימחק. אם המשתמש יתקין מחדש את האפליקציה ויעניק שוב הרשאה, האפליקציה תוכל לקרוא נתונים מ-Health Connect עד 30 יום לפני התאריך החדש הזה.
דוגמה
אם משתמש העניק לאפליקציה הרשאת קריאה בפעם הראשונה ב-30 במרץ 2023, הנתונים המוקדם ביותר שהאפליקציה תוכל לקרוא חזרה יהיו מ-28 בפברואר 2023 ואילך.
אחר כך המשתמש ימחק את האפליקציה ב-10 במאי 2023. המשתמש מחליט להתקין מחדש את האפליקציה ב-15 במאי 2023 ולהעניק הרשאת קריאה. התאריך המוקדם ביותר שהאפליקציה יכולה לקרוא נתונים ממנו הוא 15 באפריל 2023.