Health Connect תצורף ל-Android 14 כשכבה משותפת של אחסון נתונים של נתונים בתחום בריאות הצרכנים, מוגנים על ידי הרשאות מפורטות ונגישים אפליקציית המערכת של Android (נקראת במסמך הזה framework ).
מפתחים צריכים להתייחס ל-APK של Health Connect (Android 13) כאל גישה לאחור של מודל ה-framework. מודל ה-framework ישמור התאמת תכונות של 100% לתכונות שקודמות ל-APK.
במהלך המעבר מ-Android 13 ל-14, חשוב מאוד חוויית המשתמש צריכה להיות חלקה ואינטואיטיבית ככל האפשר.
במסמך הזה מתוארת תוכנית ההעברה, הנה כמה דוגמאות להעברה ומפרט שינויים ב-Jetpack SDK, שמאפשרים גישה ממשק API של Health Connect.
תוכנית העברה
- אחרי השקת Android 14, Google תעבור לספק את Health Connect בתור אפליקציית מערכת Android.
- לאחר מכן, יתבצע מילוי חוסרים של הנתונים מה-APK ברגע שתושג ההתאמה של התכונות.
- כל נקודות הכניסה יטרגטו את ממשק המשתמש של אפליקציית המערכת.
- העברת הנתונים תתחיל. בזמן שההעברה מתקדמת, ממשקי ה-API של המודול יושעו במצב 'העברה בתהליך' הסטטוס. הזה יהיו גלויים גם בממשק המשתמש של Health Connect.
- לאחר השלמת ההעברה, ניתן יהיה להסיר את ה-APK.
תרחישי העברה לדוגמה
הנה מספר תרחישים לדוגמה שמסבירים את תהליך ההעברה
סוגי הנתונים interval
ו-series
:
דוגמה 1 – ריצה (נתוני מרווח)
משתמש אסף רשומות פעילות במשך 10 שנים במשך שעה בכל יום. הזה שווה ל:
- רשומות של סשנים של תרגילים: 365 * 10 * 1
- שלבים: 365 * 10 * 1
- קלוריות: 365 * 10 * 1
- סה"כ = 365 כפול 10 כפול 3 (365 כפול 30) = 10,150
בהינתן שמקטע אחד שווה ל-3,000 רשומות, סיכום הנתונים שלמעלה הוא 4 של מקטעים.
הבדיקה הפנימית שלנו אישרה שמקטע אופייני לוקח כ- השנייה להוספה, כך שהנתונים שלמעלה יועברו תוך כ-4 שניות.
דוגמה 2 – דופק (נתוני סדרה)
משתמש אסף נתוני דופק במשך 5 שנים (עם רשומה שנוצרה כל דקות) בסך 2,628,000 רשומות.
כשהערך הוא 3,000 רשומות לכל מקטע, הנתונים מחולקים בין 876 מקטעים. נתון להוספת מקטע אחד נדרשת כשנייה, הנתונים יועברו בפחות מ-15 דקות.
תהליך ההעברה המוצע
החלטנו לבחור להעברה מיידית. מבחינה מעשית, המשמעות היא שה-APK יהפוך ללא פעיל מיד לאחר שדרוג המכשיר ל- Android 14, עם כמה שפחות התערבות של משתמשים.
הנה תהליך העברה כללי:
- המשתמש משדרג את המכשיר ל-Android 14.
- Jetpack 14 מנתב את המשתמש לממשקי ה-API של המודול, וחוסם אותם באמצעות מתבצעת העברה.
- תהליך ההעברה מתחיל כשגרסת המודול תואמת לתכונות
ב-APK: כלומר, גרסת המודול מכילה את אותה קבוצת תכונות, או
עוד. אחרי שתהליך ההעברה מתחיל, ה-APK מעביר את ההרשאות
ונתונים.
- אם שתי הגרסאות לא תואמות לתכונות, גרסת המודול נדרש שדרוג. לאחר השלמת השדרוג, תהליך ההעברה
- לאחר השלמת ההעברה, המצב ישתנה ל'העברה' הושלם', וממשקי ה-API של המודול מבוטלים.
- כעת ניתן להסיר את ההתקנה של ה-APK.
רכיבים בממשק המשתמש של ההעברה
המסכים הבאים מוצגים על ידי מודול framework לחינוך משתמשים למטרות, לפני ההעברה ובמהלכה:
איור 1. אם ה-APK של Health Connect לא 'מודע להעברה', תוצג הודעה מורה למשתמש לעדכן את ה-APK. אם המשתמש ידחה את העדכון, המודול ממשיך לפעול ומתחיל לצבור הרשאות ונתונים:
איור 2. אם המודול של framework דורש עדכון כדי להפוך אותו לתכונה,
תואמת, תוצג בקשה מהמשתמש לבצע את העדכון
להפעיל מחדש את המכשיר. אם המשתמש דוחה את העדכון, המודול ממשיך
כדי לפעול ומתחיל לצבור הרשאות ונתונים:
איור 3. במהלך תהליך ההעברה מוצג סימן גרפי שפעולה מתבצעת, עם טקסט שמסביר שמתבצע סנכרון של הנתונים:
נתונים שהוסרו
אם המודול של framework התחיל לקבל נתונים והרשאות לפני ביצוע העברה או שחזור מבוסס-ענן, בכפוף לכללים.
הרשאות
אם הרשאות קיימות במודול framework, כל כפילות המערכת מתעלמת מהרשאות שהתקבלו מה-APK בזמן תהליך ההעברה.
נתונים
במהלך ההעברה, המערכת מתעלמת מנתונים כפולים שמקורם ב-APK. סמל האפשרויות הנוספות הנתונים העדכניים מהמודול מקבלים העדפה.
המערכת מסירה כפילויות של הנתונים בתאריך clientRecordId
אם מזהה הרשומה סופק על ידי
הלקוח. אם לא, מרווחי זמן (startTime
ו-endTime
למודעות פנימיות
ו-time
עבור רשומות מיידיות) נחשבים כמפתח, יחד עם הנתונים
הסוג ושם החבילה של האפליקציה.
שינויים ב-Jetpack SDK
ה-Jetpack SDK משמש כנקודת השילוב המשותפת קישור בין APK לבין ממשקי ה-API של מסגרת Health Connect.
יצרני ציוד מקורי יוכלו להתחיל בשילוב עם Jetpack 13 כך שכש-Jetpack 14 תוכלו להתאים את הספרייה החדשה ולהרכיב אותה בתוך Android מגרסה 14.
אנחנו נפרסם גרסה חדשה של ה-SDK שתומכת במעבר אל Android מגרסה 14. תצטרכו לבצע כמה שינויים בשילוב הקיים כדי כדי להבטיח מעבר חלק.
הצהרת הרשאות
ב-Android 13, אתם מצהירים על הרשאות בפורמט מותאם אישית של הרשאות, קובץ משאב שמקושר למניפסט:
#AndroidManifest.xml
<activity>
android:name=".RationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
</intent-filter>
<meta-data
android:name="health_permissions"
android:resource="@array/health_permissions"/>
</activity>
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
#health_permissions.xml
<resources>
<array name="health_permissions">
<item>androidx.health.permission.SleepSession.READ</item>
<item>androidx.health.permission.SleepStage.READ</item>
<item>androidx.health.permission.Weight.READ</item>
<item>androidx.health.permission.Weight.WRITE</item>
</array>
</resources>
כדי לתמוך ב-Android 14, מפתחים צריכים לעבור להרשאות הרגילות פורמט:
#AndroidManifest.xml
<uses-permission android:name=”android.permission.health.READ_SLEEP” />
<uses-permission android:name=”android.permission.health.READ_WEIGHT” />
<uses-permission android:name=”android.permission.health.WRITE_WEIGHT” />
<activity>
android:name=".RationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
</intent-filter>
</activity>
<queries>
<package android:name="com.google.android.apps.healthdata"/>
</queries>
פתיחת Health Connect
רוב האפליקציות של צד שלישי כוללות לחצן שפותח את אפליקציית Health Connect, למשל כ'ניהול גישה' ב-Fitbit.
ב-Android 13, פותחים את אפליקציית Health Connect באמצעות שם החבילה, או
באמצעות הפעולה androidx.health.ACTION_HEALTH_CONNECT_SETTINGS
.
ב-Android 14, צריך להשתמש בפעולת Intent שמוגדרת ב-Jetpack SDK, שיש לו ערכים שונים בהתאם לגרסת Android שעליה הוא פועל:
@get:JvmName("getHealthConnectSettingsAction")
@JvmStatic val
ACTION_HEALTH_CONNECT_SETTINGS
אחזור של לקוח Health Connect
יצרנו API יחיד בשם sdkStatus
, שזמין ב-Jetpack 11, כדי
מחליפים שני ממשקי API אחרים שהוצאו משימוש – IsSdkSupported()
ו
isProviderAvailable()
שינויים ב-API של רשומת סשנים
ארבעה סוגי משנה של ExerciseSession
נמחקו כחלק מאלפא 10
גרסה:
ExerciseEvent
ExerciseLaps
ExerciseRepetitions
SwimmingStrokes
בדומה ל-ExerciseSessionRecord
, SleepStage
יהפוך לתת-סוג של
SleepSession
.
יחולו גם סוגי המשנה ExerciseSessionRecord
וגם השינויים ב-SleepSession
שהושקה כחלק מעדכון ה-SDK לחודש אפריל.
עדכון סוג הסשן של התרגיל
לא תהיה יותר תמיכה בסוגי האימון הבאים: כסוגי פלחים במועד מאוחר יותר:
EXERCISE_TYPE_BACK_EXTENSION
EXERCISE_TYPE_BARBELL_SHOULDER_PRESS
EXERCISE_TYPE_BENCH_PRESS
EXERCISE_TYPE_BENCH_SIT_UP
EXERCISE_TYPE_BURPEE
EXERCISE_TYPE_CRUNCH
EXERCISE_TYPE_DEADLIFT
EXERCISE_TYPE_DUMBBELL_CURL_LEFT_ARM
EXERCISE_TYPE_DUMBBELL_CURL_RIGHT_ARM
EXERCISE_TYPE_DUMBBELL_FRONT_RAISE
EXERCISE_TYPE_DUMBBELL_LATERAL_RAISE
EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_LEFT_ARM
EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_RIGHT_ARM
EXERCISE_TYPE_DUMBBELL_TRICEPS_EXTENSION_TWO_ARM
EXERCISE_TYPE_FORWARD_TWIST
EXERCISE_TYPE_JUMPING_JACK
EXERCISE_TYPE_JUMP_ROPE
EXERCISE_TYPE_LAT_PULL_DOWN
EXERCISE_TYPE_LUNGE
EXERCISE_TYPE_PLANK
EXERCISE_TYPE_SQUAT
EXERCISE_TYPE_UPPER_TWIST
סוגי תחליפים:
EXERCISE_TYPE_HIGH_INTENSITY_INTERVAL_TRAINING
EXERCISE_TYPE_STRENGTH_TRAINING
EXERCISE_TYPE_CALISTHENICS
טיפול ביומן השינויים
יומני השינויים לא יועברו כחלק מהמעבר מ-APK ל-Android 14.
כשההעברה תושלם, מתחילים לקבל TOKEN_EXPIRED
או
TOKEN_INVALID
חריגים. צריך לטפל בהן בדרכים הבאות (
סדר העדפה):
1. קריאה וביטול כפילויות של כל הנתונים מאז 'קריאה אחרונה' או של חותמת הזמן 30 ימים
אחסון חותמת זמן של הפעם האחרונה שבה האפליקציה קראה נתונים מ-Health Connect. באסימון תפוגה, יש לקרוא מחדש את הנתונים מהערך הזה או מ-30 הימים הקודמים (בהתאם לנתון המינימלי), ולהסיר ממנו נתונים כנגד נתונים שנקראו בעבר באמצעות המזהה הייחודי האוניברסלי (UUID).
2. קריאת נתונים מאז 'קריאה אחרונה' timestamp
יצירה של חותמת זמן שמציינת מתי הנתונים נקראו לאחרונה מ-Health Connect , וכשתוקף האסימון, לקרוא את כל הנתונים אחרי הערך הזה.
3. מחיקה וקריאה חוזרת של נתונים מ-30 הימים האחרונים
מחיקת כל הנתונים שנקראו מ-Health Connect ב-30 הימים האחרונים וקריאת הכול של הנתונים האלה שוב (למשל, כפי שמתבצע בפעם הראשונה שבה אפליקציות משתלבות עם Health חיבור).
4. לא לעשות כלום (כלומר, לקרוא מחדש את הנתונים מ-30 הימים האחרונים בלי לבטל כפילויות)
יש להשתמש במצב זה בתור מוצא אחרון, עם סיכון גבוה להצגת מודעות נתונים כפולים. מומלץ למפתחים במקום זאת לבחון את אפשרויות 1-3, בהינתן שמזהי UUID אמורים כבר להיות קיימים.
בדיקת ממשקי API של Android 14 באמצעות Jetpack SDK
ערכת ה-SDK של Android 14 Jetpack תפורסם ב-7 ביוני 2023, יחד עם גרסת בטא 3 של Android 14. יהיה עליך להתחיל להרכיב את האפליקציה מול עם Android 14 תהיה אפשרות להשתמש ב-Android 14 Jetpack SDK.
כדי לבדוק את הפתרון שלך מול גרסאות build של תצוגה מקדימה למפתחים של Android לפני 7 ביוני, עליך לפנות לאיש הקשר שלך ב-Google לקבלת עזרה.
אם אתם רוצים לבדוק את הפתרון שלכם בהשוואה לגרסת בטא 3, עליכם ליצור את השינויים הבאים ב-APK:
- הגדרה של
compileSDKPreview = UpsideDownCake
. - צריך לעדכן את המניפסט כך שיכלול Intent ל-Android 14:
# AndroidManifest.xml
<uses-permission android:name=”android.permission.health.READ_SLEEP”/>
<uses-permission android:name=”android.permission.health.READ_WEIGHT”/>
<uses-permission android:name=”android.permission.health.WRITE_WEIGHT”/>
<activity>
android:name=".RationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
</intent-filter>
</activity>
<activity-alias>
android:name="AndroidURationaleActivity"
android:exported="true"
android:targetActivity=".RationaleActivity"
android:permission="android.permission.START_VIEW_PERMISSION_USAGE">
<intent-filter>
<action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
<category android:name="android.intent.category.HEALTH_PERMISSIONS" />
</intent-filter>
</activity-alias>
<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
התאמה אישית של OEM (יצרן ציוד מקורי)
ב-Android 14, הכלי 'פרטיות' ב-Health Connect אמצעי הבקרה לניהול נתונים נמצאים בהגדרות המערכת.
כדי לגרום למסכים של ניהול נתונים והרשאות להיראות ולהרגיש כמו חלק לגבי המכשיר שלכם, Health Connect מאפשרת ל-OEM (יצרן הציוד המקורי) להשתמש בשכבות-על בהתאמה אישית.
לקבלת מידע על עיצוב של OEM (יצרן ציוד מקורי), אפשר לעיין ב-Health Connect של Google Mobile Services תיעוד.