תכנון ובדיקה של סוגי נתונים של Health Connect

אפליקציית Health Connect מאחסנת ומארגנת נתוני בריאות וכושר. הוא גם מתייחס לאופן המדידה של סוגי נתונים שונים. סוגי הנתונים האלה כוללים מדידות של הדופק שנלקחות באופן מיידי, מספר הצעדים שנמדד לאורך זמן ונתוני שינה שנמדדים בסשנים.

חשוב להבין קודם אילו סוגי נתונים והרשאות זמינים ב-Health Connect כדי שתוכלו לתכנן את הדרישות של האפליקציה. לכן, צריך לבדוק את סוגי הנתונים לפני שקובעים את הדרישות.

קטגוריות של סוגי נתונים

אפליקציית Health Connect תומכת בסוגי נתונים שמשמשים את רוב אפליקציות הבריאות והכושר, כדי לספק מגוון רחב ככל האפשר. המטרה של Health Connect היא לספק תצוגה מקיפה של נתוני הבריאות והכושר ולאחסן אותם. סוגי הנתונים האלה נכללים בקטגוריות הבאות:

  • פעילות: כאן מתועדת כל פעילות שהמשתמש מבצע. היא יכולה לכלול פעילויות שקשורות לבריאות ולכושר, כמו ריצה ושחייה.
  • מדידות גוף: כאן נאספים נתונים נפוצים שקשורים לגוף, כמו משקל המשתמש וקצב חילוף החומרים הבסיסי שלו.
  • מעקב אחר המחזור: כאן נרשמים מחזורי הווסת ונקודות נתונים שקשורות אליהם, כמו תוצאה בינארית של בדיקת ביוץ.
  • תזונה: כאן מתועדים סוגי נתונים שקשורים למאזן הנוזלים ולתזונה. המדד הראשון מייצג את כמות המים שמשתמש צורך במשקה אחד. האחרון כולל שדות אופציונליים כמו קלוריות, סוכר ומגנזיום.
  • שינה: נתונים על משך השינה וסוג השינה של המשתמש.
  • נתונים חיוניים: כאן נשמר מידע חיוני על המצב הבריאותי הכללי של המשתמש. הוא כולל נתונים כמו חום גוף, סוכר בדם, לחץ דם ורמת החמצן בדם.

פורמט סוג הנתונים

סוגי הנתונים ב-Health Connect מאוחסנים באובייקטים שהם מחלקות משנה של Record.

לכל סוג נתונים יש שדות משויכים שהם כלליים, כמו time ו-zoneOffset, או ספציפיים, כמו title, ‏ count ו-percentage. חלק מהשדות משתמשים בסוגים פשוטים – כמו long,‏ double או string – ואחרים משתמשים בסוגים מורכבים כמו מנייה (enumeration) ומחלקות כמו Instant ו-ZoneOffset. המאפיינים של השדות האלה יכולים להיות מאפייני חובה או מאפיינים אופציונליים. חלק מהמאפיינים הם לקריאה בלבד, וחלק מהמאפיינים מוגבלים לטווח ערכים ספציפי.

רשימה מלאה של סוגי הנתונים הזמינים והשדות שלהם מופיעה בכיתות ב-Jetpack.

מאפייני נתונים נוספים

הנתונים ב-Health Connect API כוללים גם מאפייני מטא-נתונים שמתוארים ברשימה הבאה:

  • מזהה Health Connect: לכל נקודת נתונים מוקצה מזהה ייחודי (UID) בזמן היצירה. האפשרות הזו שימושית לפעולות קריאה וכתיבה רגילות. פרטים נוספים זמינים במאמר בנושא מזהה Health Connect.
  • זמן השינוי האחרון: חותמת הזמן של המופע האחרון שבו רשומה עודכנה. הוא נוצר באופן אוטומטי בפעם הראשונה שיוצרים את הרשומה או בכל עדכון.
  • מקור הנתונים: ב-Health Connect מאוחסן מידע על האפליקציה שממנה הגיעו הנתונים. הוא מכיל את שם החבילה של המקור הזה, שנוסף באופן אוטומטי בזמן היצירה.
  • מכשיר: אפליקציית Health Connect שומרת מידע על המכשיר שממנו הגיעו הנתונים. הוא מכיל את היצרן והדגם של המכשיר, ואתם צריכים לספק את הערך באופן ידני.
  • מזהה לקוח: Health Connect מספק מזהי לקוח כדי שאפליקציות לקוח יוכלו להפנות לנתונים באמצעות המזהים שלהן. כך קל יותר לפתור בעיות בסנכרון. הערך הזה מסופק לרשומה באופן ידני.
  • גרסת רשומת הלקוח: בנוסף ל-Client ID, ‏ Health Connect מספקת גרסאות כדי לעזור לעקוב אחרי שינויים במהלך סנכרון הנתונים. הערך הזה מסופק לרשומה באופן ידני.
  • שיטת התיעוד: אפליקציית Health Connect מאפשרת לכם להבין איך הנתונים מתועדים. השיטות האלה כוללות אפליקציות שמקליטות נתונים באופן פסיבי (אוטומטי), ומשתמשים שמקליטים נתונים באופן אקטיבי או ידני.

מזהה Health Connect

‫Health Connect מקצה מזהים ייחודיים (UID) לאובייקטים של נתונים שנוספו לאחרונה, כדי לזהות את האובייקטים של הנתונים ולהבחין ביניהם לבין אובייקטים אחרים. מזהים של Health Connect שימושיים בבקשות קריאה או כתיבה. המזהים ב-Health Connect לא זהים למזהי לקוח. אפליקציית לקוח מקצה מזהי לקוח, ואילו Health Connect מקצה רק מזהי Health Connect.

חשוב לזכור את ההערות הבאות כשעובדים עם מזהים ב-Health Connect:

  • לכל סשן יש מזהה Health Connect אחד, אבל לנתונים בתוך הסשן יש מזהים משלהם ב-Health Connect.
  • המזהים של Health Connect לא קשורים לחותמות זמן.
  • בתרחישי שימוש מסוימים, יכול להיות שיהיה צורך לאחסן מזהה ספציפי של Health Connect במהלך תהליך עבודה. לדוגמה, נדרש מזהה ספציפי כדי לאחזר ולהציג למשתמש את רשומת הנתונים שהוא בדיוק התחבר אליה.

השעה ב-Health Connect

כל הנתונים שנכתבים ב-Health Connect צריכים לכלול את פרטי ההפרש בין אזור הזמן המקומי לבין שעון UTC. הגדרת ההפרש מאזור הזמן מאפשרת לאפליקציות לקרוא את הנתונים כדי להציג אותם בזמן אזרחי. הזמן האזרחי הוא הזמן המקומי שרלוונטי למשתמש, אבל לא בהכרח לפי זמן אוניברסלי מתואם (UTC).

במקרים נדירים, יכול להיות שההפרש מאזור הזמן לא יהיה זמין. כשזה קורה ב-Android 14 (API ברמה 34), ‏ Health Connect מגדיר את ההפרש מאזור הזמן על סמך אזור הזמן שמוגדר כברירת מחדל במערכת של המכשיר. ב-Android 13 ובגרסאות קודמות (רמת API‏ 33 ומטה), אפשר לכתוב ל-Health Connect בלי לציין מידע על הפרש השעות, ומומלץ להימנע מכך ככל האפשר.

הגדרת השעה ואזור הזמן

כשכותבים נתונים, ציון מידע על היסט אזור הזמן מספק מידע על אזור הזמן כשקוראים נתונים ב-Health Connect. עם זאת, יכול להיות שהפעולה לא תצליח במצבים מסוימים, למשל אם לא צוין היסט אזור הזמן. האפליקציה שלכם צריכה להיות מוכנה להתמודד עם שני סוגי הנתונים, באופן שמתאים לנסיבות הספציפיות שלכם.

הרשאות

לפני שמבקשים הרשאות, צריך להצהיר עליהן במניפסט. בטבלאות הבאות מופיע מיפוי מלא של סוגי הנתונים וההרשאות שלהם.

מגרסה 1.0.0-alpha10 ואילך

טבלת הסבר להרשאות הצהרה על הרשאת קריאה
קריאות ברקע android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND
קריאות היסטוריה android.permission.health.READ_HEALTH_DATA_HISTORY

סוג הרשומה הצהרת הרשאות קריאה וכתיבה
ActiveCaloriesBurned android.permission.health.READ_ACTIVE_CALORIES_BURNED
android.permission.health.WRITE_ACTIVE_CALORIES_BURNED
BasalBodyTemperature android.permission.health.READ_BASAL_BODY_TEMPERATURE
android.permission.health.WRITE_BASAL_BODY_TEMPERATURE
BasalMetabolicRate android.permission.health.READ_BASAL_METABOLIC_RATE
android.permission.health.WRITE_BASAL_METABOLIC_RATE
BloodGlucose android.permission.health.READ_BLOOD_GLUCOSE
android.permission.health.WRITE_BLOOD_GLUCOSE
BloodPressure android.permission.health.READ_BLOOD_PRESSURE
android.permission.health.WRITE_BLOOD_PRESSURE
BodyFat android.permission.health.READ_BODY_FAT
android.permission.health.WRITE_BODY_FAT
BodyTemperature android.permission.health.READ_BODY_TEMPERATURE
android.permission.health.WRITE_BODY_TEMPERATURE
BodyWaterMass android.permission.health.READ_BODY_WATER_MASS
android.permission.health.WRITE_BODY_WATER_MASS
BoneMass android.permission.health.READ_BONE_MASS
android.permission.health.WRITE_BONE_MASS
CervicalMucus android.permission.health.READ_CERVICAL_MUCUS
android.permission.health.WRITE_CERVICAL_MUCUS
CyclingPedalingCadence android.permission.health.READ_EXERCISE
android.permission.health.WRITE_EXERCISE
מרחק android.permission.health.READ_DISTANCE
android.permission.health.WRITE_DISTANCE
ElevationGained android.permission.health.READ_ELEVATION_GAINED
android.permission.health.WRITE_ELEVATION_GAINED
ExerciseSession android.permission.health.READ_EXERCISE
android.permission.health.READ_EXERCISE_ROUTE
android.permission.health.WRITE_EXERCISE
android.permission.health.WRITE_EXERCISE_ROUTE

סוג התרגיל

EXERCISE_TYPE_BIKING
EXERCISE_TYPE_BIKING_HAND
EXERCISE_TYPE_BIKING_MOUNTAIN
EXERCISE_TYPE_BIKING_ROAD
EXERCISE_TYPE_BIKING_SPINNING
EXERCISE_TYPE_BIKING_STATIONARY
EXERCISE_TYPE_BIKING_UTURN
EXERCISE_TYPE_CANOEING
EXERCISE_TYPE_CROSSFIT
EXERCISE_TYPE_DANCING
EXERCISE_TYPE_ELLIPTICAL
EXERCISE_TYPE_GOLF
EXERCISE_TYPE_HORSEBACK_RIDING
EXERCISE_TYPE_KAYAKING
EXERCISE_TYPE_KICKBOXING
EXERCISE_TYPE_MARTIAL_ARTS
EXERCISE_TYPE_PILATES
EXERCISE_TYPE_ROLLERBLADING
EXERCISE_TYPE_RUNNING
EXERCISE_TYPE_RUNNING_JOGGING
EXERCISE_TYPE_RUNNING_SAND
FloorsClimbed android.permission.health.READ_FLOORS_CLIMBED
android.permission.health.WRITE_FLOORS_CLIMBED
HeartRate android.permission.health.READ_HEART_RATE
android.permission.health.WRITE_HEART_RATE
HeartRateVariabilityRmssd android.permission.health.READ_HEART_RATE_VARIABILITY
android.permission.health.WRITE_HEART_RATE_VARIABILITY
גובה android.permission.health.READ_HEIGHT
android.permission.health.WRITE_HEIGHT
הידרציה android.permission.health.READ_HYDRATION
android.permission.health.WRITE_HYDRATION
IntermenstrualBleeding android.permission.health.READ_INTERMENSTRUAL_BLEEDING
android.permission.health.WRITE_INTERMENSTRUAL_BLEEDING
LeanBodyMass android.permission.health.READ_LEAN_BODY_MASS
android.permission.health.WRITE_LEAN_BODY_MASS
MenstruationFlow android.permission.health.READ_MENSTRUATION
android.permission.health.WRITE_MENSTRUATION
MindfulnessSession android.permission.health.READ_MINDFULNESS
android.permission.health.WRITE_MINDFULNESS
תזונה android.permission.health.READ_NUTRITION
android.permission.health.WRITE_NUTRITION
OvulationTest android.permission.health.READ_OVULATION_TEST
android.permission.health.WRITE_OVULATION_TEST
OxygenSaturation android.permission.health.READ_OXYGEN_SATURATION
android.permission.health.WRITE_OXYGEN_SATURATION
PlannedExerciseSession android.permission.health.READ_PLANNED_EXERCISE
android.permission.health.WRITE_PLANNED_EXERCISE
Power android.permission.health.READ_POWER
android.permission.health.WRITE_POWER
RespiratoryRate android.permission.health.READ_RESPIRATORY_RATE
android.permission.health.WRITE_RESPIRATORY_RATE
RestingHeartRate android.permission.health.READ_RESTING_HEART_RATE
android.permission.health.WRITE_RESTING_HEART_RATE
SexualActivity android.permission.health.READ_SEXUAL_ACTIVITY
android.permission.health.WRITE_SEXUAL_ACTIVITY
SkinTemperature android.permission.health.READ_SKIN_TEMPERATURE
android.permission.health.WRITE_SKIN_TEMPERATURE
SleepSession android.permission.health.READ_SLEEP
android.permission.health.WRITE_SLEEP
מהירות android.permission.health.READ_SPEED
android.permission.health.WRITE_SPEED
שלבים android.permission.health.READ_STEPS
android.permission.health.WRITE_STEPS
StepsCadence android.permission.health.READ_STEPS
android.permission.health.WRITE_STEPS
TotalCaloriesBurned android.permission.health.READ_TOTAL_CALORIES_BURNED
android.permission.health.WRITE_TOTAL_CALORIES_BURNED
VO2Max android.permission.health.READ_VO2_MAX
android.permission.health.WRITE_VO2_MAX
משקל android.permission.health.READ_WEIGHT
android.permission.health.WRITE_WEIGHT
WheelchairPushes android.permission.health.READ_WHEELCHAIR_PUSHES
android.permission.health.WRITE_WHEELCHAIR_PUSHES

בגרסה 1.0.0-alpha09 ומטה

סוג הרשומה הצהרת הרשאות קריאה וכתיבה
ActiveCaloriesBurned androidx.health.permission.ActiveCaloriesBurned.READ
androidx.health.permission.ActiveCaloriesBurned.WRITE
BasalBodyTemperature androidx.health.permission.BasalBodyTemperature.READ
androidx.health.permission.BasalBodyTemperature.WRITE
BasalMetabolicRate androidx.health.permission.BasalMetabolicRate.READ
androidx.health.permission.BasalMetabolicRate.WRITE
BloodGlucose androidx.health.permission.BloodGlucose.READ
androidx.health.permission.BloodGlucose.WRITE
BloodPressure androidx.health.permission.BloodPressure.READ
androidx.health.permission.BloodPressure.WRITE
BodyFat androidx.health.permission.BodyFat.READ
androidx.health.permission.BodyFat.WRITE
BodyTemperature androidx.health.permission.BodyTemperature.READ
androidx.health.permission.BodyTemperature.WRITE
BodyWaterMass androidx.health.permission.BodyWaterMass.READ
androidx.health.permission.BodyWaterMass.WRITE
BoneMass androidx.health.permission.BoneMass.READ
androidx.health.permission.BoneMass.WRITE
CervicalMucus androidx.health.permission.CervicalMucus.READ
androidx.health.permission.CervicalMucus.WRITE
CyclingPedalingCadence androidx.health.permission.Exercise.READ
androidx.health.permission.Exercise.WRITE
מרחק androidx.health.permission.Distance.READ
androidx.health.permission.Distance.WRITE
ElevationGained androidx.health.permission.ElevationGained.READ
androidx.health.permission.ElevationGained.WRITE
ExerciseSession androidx.health.permission.ExerciseSession.READ
androidx.health.permission.ExerciseSession.WRITE

סוג התרגיל

EXERCISE_TYPE_BIKING
EXERCISE_TYPE_BIKING_HAND
EXERCISE_TYPE_BIKING_MOUNTAIN
EXERCISE_TYPE_BIKING_ROAD
EXERCISE_TYPE_BIKING_SPINNING
EXERCISE_TYPE_BIKING_STATIONARY
EXERCISE_TYPE_BIKING_UTURN
EXERCISE_TYPE_CANOEING
EXERCISE_TYPE_CROSSFIT
EXERCISE_TYPE_DANCING
EXERCISE_TYPE_ELLIPTICAL
EXERCISE_TYPE_GOLF
EXERCISE_TYPE_HORSEBACK_RIDING
EXERCISE_TYPE_KAYAKING
EXERCISE_TYPE_KICKBOXING
EXERCISE_TYPE_MARTIAL_ARTS
EXERCISE_TYPE_PILATES
EXERCISE_TYPE_ROLLERBLADING
EXERCISE_TYPE_RUNNING
EXERCISE_TYPE_RUNNING_JOGGING
EXERCISE_TYPE_RUNNING_SAND
FloorsClimbed androidx.health.permission.FloorsClimbed.READ
androidx.health.permission.FloorsClimbed.WRITE
HeartRate androidx.health.permission.HeartRate.READ
androidx.health.permission.HeartRate.WRITE
HeartRateVariabilityRmssd androidx.health.permission.HeartRateVariability.READ
androidx.health.permission.HeartRateVariability.WRITE
גובה androidx.health.permission.Height.READ
androidx.health.permission.Height.WRITE
הידרציה androidx.health.permission.Hydration.READ
androidx.health.permission.Hydration.WRITE
IntermenstrualBleeding androidx.health.permission.IntermenstrualBleeding.READ
androidx.health.permission.IntermenstrualBleeding.WRITE
LeanBodyMass androidx.health.permission.LeanBodyMass.READ
androidx.health.permission.LeanBodyMass.WRITE
MenstruationFlow androidx.health.permission.Menstruation.READ
androidx.health.permission.Menstruation.WRITE
תזונה androidx.health.permission.Nutrition.READ
androidx.health.permission.Nutrition.WRITE
OvulationTest androidx.health.permission.OvulationTest.READ
androidx.health.permission.OvulationTest.WRITE
OxygenSaturation androidx.health.permission.OxygenSaturation.READ
androidx.health.permission.OxygenSaturation.WRITE
PlannedExerciseSession androidx.health.permission.PlannedExerciseSession.READ
androidx.health.permission.PlannedExerciseSession.WRITE
Power androidx.health.permission.Power.READ
androidx.health.permission.Power.WRITE
RespiratoryRate androidx.health.permission.RespiratoryRate.READ
androidx.health.permission.RespiratoryRate.WRITE
RestingHeartRate androidx.health.permission.RestingHeartRate.READ
androidx.health.permission.RestingHeartRate.WRITE
SexualActivity androidx.health.permission.SexualActivity.READ
androidx.health.permission.SexualActivity.WRITE
SleepSession androidx.health.permission.SleepSession.READ
androidx.health.permission.SleepSession.WRITE
מהירות androidx.health.permission.Speed.READ
androidx.health.permission.Speed.WRITE
שלבים androidx.health.permission.Steps.READ
androidx.health.permission.Steps.WRITE
StepsCadence androidx.health.permission.Steps.READ
androidx.health.permission.Steps.WRITE
TotalCaloriesBurned androidx.health.permission.TotalCaloriesBurned.READ
androidx.health.permission.TotalCaloriesBurned.WRITE
VO2Max androidx.health.permission.VO2Max.READ
androidx.health.permission.VO2Max.WRITE
משקל androidx.health.permission.Weight.READ
androidx.health.permission.Weight.WRITE
WheelchairPushes androidx.health.permission.WheelchairPushes.READ
androidx.health.permission.WheelchairPushes.WRITE

בדיקת סוגי הנתונים וההרשאות

אחרי שתכננתם את סוגי הנתונים וההרשאות, תוכלו להטמיע אותם במהלך הפיתוח.

לפני שמעלים את האפליקציה לחנות Play, חשוב לבדוק שוב את רשימת סוגי הנתונים וההרשאות שהאפליקציה דורשת. כך תוכלו להצהיר בצורה מדויקת על השימוש בנתונים באפליקציה.

כשמתכוננים לפרסם את האפליקציה ב-Play Store, צריך להצהיר על הגישה לסוגי הנתונים של Health Connect שהאפליקציה משתמשת בהם. אחרת, יכול להיות שהמשתמשים יקבלו הודעת שגיאה שבה האפליקציה לא יכולה לגשת לסוגי הנתונים של Health Connect כי נדרש אישור מיוחד.