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

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

डेवलपर को Health Connect APK (Android 13) को फ़्रेमवर्क मॉडल के लिए, पिछले वर्शन के साथ काम करने वाली लेयर के तौर पर इस्तेमाल करना चाहिए. फ़्रेमवर्क मॉडल में, APK के पिछले वर्शन की तरह ही सभी सुविधाएं उपलब्ध होंगी.

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

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

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

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

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

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

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

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

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

एक चंक में 3,000 रिकॉर्ड होते हैं. इसलिए, डेटा में कुल चार चंक हैं.

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

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

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

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

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

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

माइग्रेशन का हाई-लेवल फ़्लो यहां दिया गया है:

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

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

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

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

फ़ोन को अपडेट करने की ज़रूरत है
पहली इमेज: Health Connect APK को अपडेट करने का अनुरोध.

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

APK अपडेट करने की ज़रूरत है
दूसरी इमेज: फ़्रेमवर्क मॉड्यूल को अपडेट करने का अनुरोध.

तीसरी इमेज. माइग्रेशन की प्रोसेस के दौरान, एक स्पिनर दिखता है. साथ ही, एक टेक्स्ट भी दिखता है. इससे पता चलता है कि डेटा सिंक हो रहा है.

डेटा सिंक करने की सुविधा के बारे में जानकारी देने वाली इमेज
तीसरी इमेज: डेटा माइग्रेट किया जा रहा है.

डुप्लीकेट डेटा हटाया गया

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

अनुमतियां

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

डेटा

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

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

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

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

OEM, Jetpack 13 के साथ इंटिग्रेट करना शुरू कर सकते हैं, ताकि Jetpack 14 के उपलब्ध होने पर, नई लाइब्रेरी का इस्तेमाल किया जा सके और उसे Android 14 में कंपाइल किया जा सके.

हम एसडीके का नया वर्शन रिलीज़ करेंगे. यह 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() की जगह किया जा सकता है.

Session record API में हुए बदलाव

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

  • ExerciseEvent
  • ExerciseLaps
  • ExerciseRepetitions
  • SwimmingStrokes

ExerciseSessionRecord की तरह ही, SleepStage भी SleepSession का सबटाइप बन जाएगा.

ExerciseSessionRecord के सबटाइप और SleepSession से जुड़े बदलाव, एसडीके के अप्रैल वाले अपडेट के साथ रिलीज़ किए जाएंगे.

कसरत के सेशन के टाइप को अपडेट करना

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

  • 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 दिनों के डेटा से फिर से पढ़ा जाना चाहिए. इनमें से जो भी कम हो उसे इस्तेमाल किया जाना चाहिए. साथ ही, यूयूआईडी का इस्तेमाल करके, पहले पढ़े गए डेटा से डुप्लीकेट डेटा को हटाया जाना चाहिए.

2. 'पिछली बार पढ़ा गया' टाइमस्टैंप के बाद का डेटा पढ़ें

एक टाइमस्टैंप सेट करें, जिससे यह पता चले कि Health Connect से डेटा को आखिरी बार कब पढ़ा गया था. साथ ही, टोकन की समयसीमा खत्म होने पर, उस वैल्यू के बाद का सारा डेटा पढ़ें.

3. पिछले 30 दिनों का डेटा मिटाना और फिर से पढ़ना

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

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

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

Jetpack SDK की मदद से Android 14 के एपीआई की टेस्टिंग करना

Android 14 Jetpack SDK टूल को 7 जून, 2023 को रिलीज़ किया जाएगा. साथ ही, Android 14 का बीटा 3 वर्शन भी रिलीज़ किया जाएगा. 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, कस्टम ओवरले का इस्तेमाल करके ओईएम थीमिंग की सुविधा देता है.

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