نقل بيانات Health Connect من Android 13 (APK) إلى Android 14 (إطار العمل)

سيتم توفير تطبيق Health Connect مع Android 14 كطبقة شائعة لتخزين البيانات. على البيانات الصحية للمستهلك، ومحمية بأذونات دقيقة ويمكن الوصول إليها تطبيق نظام Android (المشار إليه في هذا المستند باسم "إطار العمل" ).

على المطوّرين استخدام حزمة APK Health Connect (الإصدار 13 من نظام التشغيل Android) كإصدار قديم. طبقة التوافق لنموذج إطار العمل. سيحتفظ نموذج إطار العمل تكافؤ الميزات بنسبة 100% مع الإصدار السابق لحِزمة APK.

خلال عملية الانتقال من نظام التشغيل Android 13 إلى الإصدار 14، من المهم جدًا تجربة المستخدم سلسة وبديهية قدر الإمكان.

يوضح هذا المستند خطة نقل البيانات، ويقدم بعض الأمثلة على عملية نقل البيانات وتسرد التغييرات التي طرأت على حزمة تطوير البرامج (SDK) لحزمة Jetpack، والتي تسهّل الوصول إلى واجهة برمجة التطبيقات Health Connect

خطة نقل البيانات

  1. بعد طرح الإصدار 14 من نظام التشغيل Android، ستنتقل Google إلى توفير تطبيق Health Connect. كتطبيق نظام Android.
  2. ستتم بعد ذلك إضافة البيانات السابقة من حزمة APK بعد تحقيق تعادل الميزات.
  3. ستستهدف جميع نقاط الدخول واجهة مستخدم تطبيق النظام.
  4. ستبدأ عملية نقل البيانات. وأثناء تقدم عملية الترحيل، سيتم تعليق واجهات برمجة التطبيقات للوحدة مع الخيار "عملية النقل في العملية". الحالة. هذا النمط سيظهر أيضًا في واجهة مستخدم Health Connect.
  5. بعد اكتمال عملية النقل، يمكن إلغاء تثبيت حزمة APK.

أمثلة على سيناريوهات نقل البيانات

في ما يلي بعض الأمثلة على السيناريوهات التي توضّح عملية نقل البيانات لكل من نوعا بيانات interval وseries:

مثال 1 - الجري (بيانات الفاصل الزمني)

جمع أحد المستخدمين 10 سنوات من السجلات الجارية لمدة ساعة واحدة كل يوم. هذا النمط يساوي:

  • سجلات جلسات التمرين: 365 * 10 * 1
  • الخطوات: 365 * 10 * 1
  • السعرات الحرارية: 365 * 10 * 1
  • الإجمالي = 365 * 10 * 3 (365 * 30) = 10,150

بالنظر إلى أن مقطعًا واحدًا يساوي 3000 سجل، فإن إجمالي البيانات أعلاه حوالي 4 الأجزاء.

أكد اختبارنا الداخلي أن المقطع النموذجي يستغرق حوالي وثانيًا، إدراجها، لذا سيتم نقل البيانات الواردة أعلاه خلال 4 ثوانٍ.

مثال 2 - معدل ضربات القلب (بيانات السلسلة)

قام المستخدم بجمع بيانات معدل ضربات القلب على مدار 5 سنوات (مع إنشاء سجل كل دقيقة) إجمالاً 2628000 سجل.

عند وجود 3000 سجل لكل مقطع، يتم توزيع البيانات عبر 876 مجموعة. المقدَّمة يستغرق إدراج مقطع واحد حوالي ثانية، فسيتم ترحيل البيانات في أقل من 15 دقيقة.

مسار نقل البيانات المقترَح

لقد قرّرنا تفعيل نقل البيانات الفوري. من الناحية العملية، يعني أنّ حزمة APK ستصبح غير نشطة فور ترقية الجهاز إلى Android 14، مع أقل قدر من تدخل المستخدمين

لنلقِ نظرة على عملية نقل بيانات عالية المستوى:

  1. ترقية المستخدم إلى الإصدار 14 من Android
  2. ويوجِّه Jetpack 14 المستخدم إلى واجهات برمجة تطبيقات الوحدة، وتحظره أثناء تنفيذ عملية نقل البيانات قيد التقدم.
  3. تبدأ عملية نقل البيانات عندما يكون إصدار الوحدة متوافقًا مع الميزات. مع حزمة APK - أي أن إصدار الوحدة يحتوي على مجموعة الميزات نفسها أخرى. بعد بدء عملية النقل، تنقل حزمة APK الأذونات. والبيانات.
    1. فإذا لم يكن كلا الإصدارين متوافقين مع الميزات، فسيبدأ إصدار الوحدة تحتاج إلى ترقيتها. بعد اكتمال الترقية، تبدأ عملية نقل البيانات المستخدم.
  4. بعد اكتمال عملية النقل، يتم تغيير الحالة إلى "نقل البيانات". مكتمل، وإلغاء حظر واجهات برمجة تطبيقات الوحدة.
  5. يمكن الآن إلغاء تثبيت حزمة APK.

عناصر واجهة المستخدم الخاصة بنقل البيانات

يتم عرض الشاشات التالية بواسطة وحدة إطار العمل لتعليم المستخدم. قبل عملية النقل وأثناءها:

الشكل 1. إذا لم يكن تطبيق Health Connect APK "معنيًا بنقل البيانات"، ستظهر لك رسالة مطالبة تُعلم المستخدم بتحديث حزمة APK. إذا رفض المستخدم التحديث، فسيتم أن تستمر الوحدة في العمل وتبدأ في تجميع الأذونات والبيانات:

يجب تحديث الهاتف


الشكل 2. إذا كانت وحدة إطار العمل تتطلب تحديثًا لكي تصبح ميزة متوافق، يتم عرض رسالة تطلب من المستخدم إجراء التحديث إعادة تشغيل أجهزتهم. إذا رفض المستخدم التحديث، تستمر الوحدة. لكي يعمل ويبدأ في تجميع الأذونات والبيانات:

مطلوب تحديث حزمة APK


الشكل 3. يتم عرض مؤشر سريان العمل أثناء عملية النقل، مع نص يوضّح أنّ البيانات تتم مزامنتها:

مزامنة البيانات

البيانات التي تمت إزالة تكرارها

إذا بدأت وحدة إطار العمل في الحصول على البيانات والأذونات قبل إجراء أي عملية نقل بيانات أو استعادة مستندة إلى السحابة الإلكترونية، يجب تنفيذ ما يلي: تطبيق القواعد.

الأذونات

إذا كانت هناك أذونات داخل وحدة إطار العمل، فسيتم تحديد أي يتم تجاهل الأذونات المكتسبة من حزمة APK أثناء عملية نقل البيانات.

البيانات

أثناء نقل البيانات، يتم تجاهل البيانات المكرّرة التي تنشأ من حزمة APK. المزيد وتُعطى الأفضلية للبيانات الحديثة من الوحدة.

ستتم إزالة تكرار البيانات في clientRecordId إذا تم توفير رقم تعريف السجلّ من خلال البرنامج. وإذا لم تكن كذلك، فإن الفواصل الزمنية (startTime وendTime للعمليات الداخلية والسجلات، وtime للسجلات الفورية) كمفتاح، إلى جانب البيانات ونوع واسم حزمة التطبيق.

التغييرات في حزمة تطوير البرامج (SDK) في Jetpack

تعمل حزمة تطوير برامج Jetpack كنقطة تكامل مشتركة لكل من حزمة Health ربط حزمة APK وواجهات برمجة التطبيقات لإطار عمل Health Connect

يمكن للمصنّعين الأصليين للأجهزة بدء الدمج مع Jetpack 13 بحيث يصبح Jetpack 14 يمكنك ملاءمة المكتبة الجديدة وتجميعها ضمن الإصدار 14 من نظام التشغيل Android

سنطرح إصدارًا جديدًا من حزمة SDK يدعم الانتقال إلى الإصدار 14 من نظام التشغيل Android ستحتاج إلى إجراء بعض التغييرات على عملية الدمج الحالية وضمان انتقال سلس.

بيان الأذونات

في 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.

في الإصدار 13 من نظام Android، يمكنك فتح تطبيق 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

لقد أنشأنا واجهة برمجة تطبيقات واحدة باسم sdkStatus ومتاحة في Jetpack 11 من أجل استبدال واجهتَي برمجة تطبيقات متوقفتين نهائيًا، وهما IsSdkSupported() isProviderAvailable()

تغييرات واجهة برمجة التطبيقات لسجلّ الجلسة

تم حذف أربعة أنواع فرعية من ExerciseSession كجزء من alpha10 الإصدار:

  • 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. قراءة البيانات منذ "آخر قراءة" الطابع الزمني

إنشاء طابع زمني يشير إلى آخر مرة تمت فيها قراءة البيانات من Health Connect ، وعند انتهاء صلاحية الرمز المميّز، اقرأ جميع البيانات بعد تلك القيمة.

3. حذف البيانات في آخر 30 يومًا وإعادة قراءتها

حذف جميع البيانات التي تمت قراءتها من Health Connect من آخر 30 يومًا، وقراءة الكل من تلك البيانات مرة أخرى (على سبيل المثال، يتم إجراؤها عند دمج التطبيقات مع Health اتصال).

‫4. عدم اتّخاذ أي إجراء (أي إعادة قراءة بيانات آخر 30 يومًا وعدم إزالة التكرار)

ويجب استخدامه كحلٍ أخير، مع المخاطر المرتبطة بعرض تكرار البيانات. على المطوّرين استكشاف الخيارات من 1 إلى 3 بدلاً من ذلك، استنادًا إلى المعرّفات الفريدة العالمية (UUID) في مكانها الصحيح.

اختبار واجهات برمجة التطبيقات لنظام التشغيل Android 14 باستخدام حزمة تطوير البرامج (SDK) في Jetpack

من المقرّر إطلاق حزمة تطوير البرامج (SDK) لحزمة Jetpack SDK لنظام التشغيل Android 14 في 7 حزيران (يونيو) 2023، إلى جانب الإصدار التجريبي 3 من نظام التشغيل Android 14 ستحتاج إلى البدء في تجميع تطبيقك مقابل يمكن استخدام الإصدار 14 من نظام Android من أجل استخدام حزمة تطوير البرامج (SDK) لحزمة Jetpack Android 14.

إذا أردت اختبار حلك بالمقارنة مع إصدارات معاينة مطوّر برامج Android قبل 7 حزيران (يونيو)، يُرجى التواصل مع جهة التواصل (POC) في Google للحصول على المساعدة.

إذا كنت ترغب في اختبار حلك مقارنةً بإصدار بيتا 3، يجب عليك إجراء التغييرات التالية في حزمة APK:

  1. ضبط compileSDKPreview = UpsideDownCake
  2. يُرجى تعديل ملف البيان ليتضمن هدفًا لنظام 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>

تخصيص المصنّع الأصلي للجهاز

في Android 14، يوفّر تطبيق Health Connect معلومات الخصوصية تقع عناصر التحكم في إدارة البيانات ضمن "إعدادات النظام"

لجعل شاشات إدارة البيانات والأذونات تبدو وكأنها جزء من يوفّر Health Connect مظهرًا للمصنّعين الأصليين من خلال استخدام العناصر المركّبة المخصصة.

للحصول على مستندات حول تصميم المُصنّع الأصلي، يُرجى الرجوع إلى تطبيق Health Connect من خدمات Google للأجهزة الجوّالة. ذات الصلة.