Health Connect को Android 13 (APK) से Android 14 (फ़्रेमवर्क) पर माइग्रेट करना

Health Connect को Android 14 के साथ पैकेज किया जाएगा. यह उपभोक्ता के स्वास्थ्य से जुड़े डेटा के लिए, सामान्य डेटा स्टोरेज लेयर के तौर पर काम करेगा. इसे ज़्यादा जानकारी वाली अनुमतियों से सुरक्षित किया जाएगा और Android सिस्टम ऐप्लिकेशन के तौर पर ऐक्सेस किया जा सकेगा. इस दस्तावेज़ में इसे 'फ़्रेमवर्क' मॉड्यूल के तौर पर बताया गया है.

डेवलपर को फ़्रेमवर्क मॉडल के लिए, Health Connect APK (Android 13) को बैकवर्ड कंपैटिबिलिटी लेयर के तौर पर इस्तेमाल करना चाहिए. फ़्रेमवर्क मॉडल, अपने APK के साथ 100% सुविधाओं को बनाए रखेगा.

Android 13 से 14 पर अपग्रेड करने के दौरान, यह ज़रूरी है कि उपयोगकर्ताओं को बेहतर और आसान अनुभव मिले.

इस दस्तावेज़ में माइग्रेशन प्लान के बारे में बताया गया है. साथ ही, माइग्रेशन के कुछ उदाहरण भी दिए गए हैं. इसमें Jetpack SDK में हुए बदलावों के बारे में भी बताया गया है, ताकि Health Connect API को ऐक्सेस करने में आसानी हो.

माइग्रेशन प्लान

  1. Android 14 रिलीज़ होने के बाद, Google Health Connect को Android सिस्टम ऐप्लिकेशन के तौर पर उपलब्ध कराएगा.
  2. सुविधाओं के बराबर होने के बाद, APK से डेटा बैकफ़िल किया जाएगा.
  3. सभी एंट्री पॉइंट, सिस्टम ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) को टारगेट करेंगे.
  4. डेटा माइग्रेशन शुरू हो जाएगा. माइग्रेशन की प्रोसेस के दौरान, मॉड्यूल के एपीआई को निलंबित कर दिया जाएगा. साथ ही, इन एपीआई के स्टेटस में 'माइग्रेशन की प्रोसेस जारी है' दिखेगा. यह जानकारी, Health Connect के यूज़र इंटरफ़ेस (यूआई) में भी दिखेगी.
  5. माइग्रेशन पूरा होने के बाद, APK को अनइंस्टॉल किया जा सकता है.

माइग्रेशन के उदाहरण

यहां कुछ उदाहरण दिए गए हैं, जिनसे interval और series, दोनों डेटा टाइप के लिए माइग्रेशन की प्रोसेस के बारे में पता चलता है:

पहला उदाहरण - दौड़ना (इंटरवल डेटा)

किसी उपयोगकर्ता ने 10 साल के लिए, हर दिन एक घंटे तक की गतिविधि के रिकॉर्ड इकट्ठा किए हैं. इसका मतलब है कि:

  • कसरत के सेशन के रिकॉर्ड: 365 * 10 * 1
  • चरण: 365 * 10 * 1
  • कैलोरी: 365 * 10 * 1
  • कुल = 365 * 10 * 3 (365 * 30) = 10,150

एक चंक में 3,000 रिकॉर्ड होते हैं. इसलिए, ऊपर दिए गए डेटा में करीब चार चंक हैं.

हमारी इंटरनल टेस्टिंग से पता चला है कि किसी सामान्य चंक को डालने में करीब एक सेकंड लगता है. इसलिए, ऊपर दिया गया डेटा करीब चार सेकंड में माइग्रेट हो जाएगा.

दूसरा उदाहरण - दिल की धड़कन की दर (सीरीज़ डेटा)

किसी उपयोगकर्ता ने पांच साल का धड़कन की दर का डेटा इकट्ठा किया है. इसमें हर मिनट एक रिकॉर्ड बनाया गया है. कुल 2,628,000 रिकॉर्ड हैं.

हर चंक में 3,000 रिकॉर्ड होने पर, डेटा को 876 चंक में बांटा जाता है. एक चंक को डालने में करीब एक सेकंड लगता है. इसलिए, डेटा को 15 मिनट से भी कम समय में माइग्रेट किया जा सकता है.

माइग्रेशन का सुझाया गया फ़्लो

हमने इंस्टैंट माइग्रेशन का विकल्प चुना है. इसका मतलब है कि डिवाइस को Android 14 पर अपग्रेड करने के बाद, APK काम करना बंद कर देगा. इसके लिए, उपयोगकर्ता को कुछ भी करने की ज़रूरत नहीं होगी.

आइए, माइग्रेशन के मुख्य फ़्लो के बारे में जानते हैं:

  1. उपयोगकर्ता अपने डिवाइस को Android 14 पर अपग्रेड करता है.
  2. Jetpack 14, उपयोगकर्ता को मॉड्यूल एपीआई पर भेजता है और माइग्रेशन की प्रोसेस के दौरान उन्हें ब्लॉक करता है.
  3. माइग्रेशन की प्रोसेस तब शुरू होती है, जब मॉड्यूल वर्शन की सुविधाएं APK के साथ काम करती हों. इसका मतलब है कि मॉड्यूल वर्शन में वही सुविधाएं या उससे ज़्यादा सुविधाएं मौजूद हों. माइग्रेशन की प्रोसेस शुरू होने के बाद, APK अनुमतियों और डेटा को माइग्रेट करता है.
    1. अगर दोनों वर्शन में सुविधा काम नहीं करती है, तो मॉड्यूल के वर्शन को अपग्रेड करना होगा. अपग्रेड पूरा होने के बाद, माइग्रेशन की प्रोसेस शुरू हो जाएगी.
  4. माइग्रेशन पूरा होने के बाद, स्टेटस को 'माइग्रेशन पूरा हो गया' में बदल दिया जाता है. साथ ही, मॉड्यूल एपीआई को अनब्लॉक कर दिया जाता है.
  5. अब APK को अनइंस्टॉल किया जा सकता है.

माइग्रेशन के यूज़र इंटरफ़ेस (यूआई) एलिमेंट

माइग्रेशन से पहले और उसके दौरान, उपयोगकर्ता को जानकारी देने के लिए, फ़्रेमवर्क मॉड्यूल ये स्क्रीन दिखाता है:

पहली इमेज. अगर Health Connect का APK, 'माइग्रेशन के बारे में जानकारी' नहीं रखता है, तो उपयोगकर्ता को APK अपडेट करने का निर्देश देने वाला एक प्रॉम्प्ट दिखता है. अगर उपयोगकर्ता अपडेट को अस्वीकार करता है, तो मॉड्यूल काम करना जारी रखता है और अनुमतियां और डेटा इकट्ठा करना शुरू कर देता है:

फ़ोन को अपडेट करना ज़रूरी है


दूसरी इमेज. अगर फ़्रेमवर्क मॉड्यूल को अपडेट करने के बाद ही, उसमें सुविधाएं इस्तेमाल की जा सकती हैं, तो उपयोगकर्ता को अपडेट करने और अपने डिवाइस को रीबूट करने के लिए कहा जाता है. अगर उपयोगकर्ता अपडेट को अस्वीकार करता है, तो मॉड्यूल काम करना जारी रखता है और अनुमतियां और डेटा इकट्ठा करना शुरू कर देता है:

APK को अपडेट करना ज़रूरी है


तीसरी इमेज. माइग्रेशन की प्रोसेस के दौरान, एक स्पिनर दिखता है. इसमें टेक्स्ट के ज़रिए यह बताया जाता है कि डेटा सिंक हो रहा है:

डेटा सिंक करना

डुप्लीकेट डेटा हटाने के बाद का डेटा

अगर फ़्रेमवर्क मॉड्यूल ने डेटा और अनुमतियां हासिल करना, माइग्रेशन या क्लाउड पर आधारित डेटा को वापस लाने की प्रोसेस शुरू होने से पहले शुरू कर दिया है, तो ये नियम लागू होंगे.

अनुमतियां

अगर फ़्रेमवर्क मॉड्यूल में अनुमतियां मौजूद हैं, तो माइग्रेशन की प्रोसेस के दौरान, APK से मिली डुप्लीकेट अनुमतियों को अनदेखा कर दिया जाता है.

डेटा

माइग्रेशन के दौरान, APK से मिलने वाले डुप्लीकेट डेटा को अनदेखा कर दिया जाता है. मॉड्यूल के ज़्यादा हाल के डेटा को प्राथमिकता दी जाती है.

अगर क्लाइंट ने रिकॉर्ड आईडी दिया है, तो clientRecordId पर डेटा को डुप्लीकेट कॉपी से हटा दिया जाता है. अगर ऐसा नहीं है, तो ऐप्लिकेशन के डेटा टाइप और पैकेज के नाम के साथ-साथ, समयावधि (इंटरनल रिकॉर्ड के लिए startTime और endTime, और इंस्टैंट रिकॉर्ड के लिए time) को कुंजी के तौर पर माना जाता है.

Jetpack SDK टूल में हुए बदलाव

Jetpack SDK टूल, Health Connect APK और Health Connect फ़्रेमवर्क एपीआई, दोनों के लिए एक ही इंटिग्रेशन पॉइंट के तौर पर काम करता है.

OEM, 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 में, आपको Jetpack SDK टूल में बताए गए इंटेंट ऐक्शन का इस्तेमाल करना होगा. इस ऐक्शन की वैल्यू, उस Android वर्शन के हिसाब से अलग-अलग होती है जिस पर यह काम कर रहा है:

@get:JvmName("getHealthConnectSettingsAction") @JvmStatic val ACTION_HEALTH_CONNECT_SETTINGS

Health Connect क्लाइंट पाना

हमने sdkStatus नाम का एक एपीआई बनाया है, जो Jetpack 11 में उपलब्ध है. इसका मकसद, IsSdkSupported() और isProviderAvailable() नाम के दो अन्य एपीआई की जगह लेना है.

सेशन रिकॉर्ड एपीआई में हुए बदलाव

alpha10 रिलीज़ के तहत, ExerciseSession के चार सब-टाइप मिटा दिए गए हैं:

  • 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 दिनों का डेटा मिटाना और फिर से पढ़ना

पिछले 30 दिनों में Health Connect से पढ़ा गया सारा डेटा मिटाएं और फिर से उस डेटा को पढ़ें. जैसे, ऐप्लिकेशन को पहली बार Health Connect के साथ इंटिग्रेट करने पर किया जाता है.

4. कुछ न करें (यानी पिछले 30 दिनों का डेटा फिर से पढ़ें और डुप्लीकेट डेटा हटाएं)

इसका इस्तेमाल आखिरी विकल्प के तौर पर किया जाना चाहिए. ऐसा करने पर, डुप्लीकेट डेटा दिखने का खतरा होता है. डेवलपर को पहले से मौजूद यूयूआईडी का इस्तेमाल करके, पहले से तीसरे विकल्प का इस्तेमाल करना चाहिए.

Jetpack SDK की मदद से, Android 14 के एपीआई की जांच करना

Android 14 के बीटा 3 वर्शन के साथ-साथ, Android 14 के Jetpack SDK टूल को 7 जून, 2023 को रिलीज़ किया जाएगा. Android 14 के Jetpack SDK टूल का इस्तेमाल करने के लिए, आपको अपने ऐप्लिकेशन को Android 14 के लिए कॉम्पाइल करना होगा.

अगर आपको 7 जून से पहले, Android Developer Preview के बिल्ड के साथ अपने समाधान की जांच करनी है, तो मदद पाने के लिए अपने 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 में कस्टम ओवरले का इस्तेमाल करके OEM थीम उपलब्ध कराई जाती है.

OEM स्टाइल के बारे में दस्तावेज़ पाने के लिए, Health Connect के Google Mobile Services के दस्तावेज़ देखें. पेज देखने के लिए, आपको Google Developers में लॉग इन करना पड़ सकता है.