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 डेटा टाइप:

उदाहरण 1 - चल रहा है (इंटरवल डेटा)

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

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

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

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

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

किसी उपयोगकर्ता ने 5 सालों की धड़कन की दर का डेटा इकट्ठा किया है (ऐसा रिकॉर्ड है जो मिनट) कुल 26,28,000 रिकॉर्ड हुए.

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

प्रस्तावित माइग्रेशन फ़्लो

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

माइग्रेट करने की प्रोसेस के हाई लेवल पर गौर करें:

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

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

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

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

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


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

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


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

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

हटाया गया डेटा

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

अनुमतियां

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

डेटा

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

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

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

Jetpack SDK टूल, Health दोनों के लिए एक ही इंटिग्रेशन पॉइंट के तौर पर काम करता है 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 ऐप्लिकेशन खोलने के लिए एक बटन होता है. जैसे, के रूप में 'ऐक्सेस मैनेज करें' बटन पर क्लिक करें.

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 में उपलब्ध है. दो अन्य बहिष्कृत API को बदलें - IsSdkSupported() और isProviderAvailable().

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

अल्फ़ा10 के हिस्से के तौर पर, 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 दिनों में फिर से पढ़ा जाना चाहिए (जो भी कम से कम के बराबर हो) और पहले पढ़े गए डेटा से उसका डुप्लीकेट बनाना का इस्तेमाल किया जा सकता है.

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

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

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

Health Connect में मौजूद पिछले 30 दिनों का सारा डेटा मिटाएं और सारा डेटा मिटाएं उस डेटा को फिर से अपलोड करना होगा (उदाहरण के लिए, जब ऐप्लिकेशन पहली बार Health के इंटिग्रेटेड हो जाते हैं कनेक्ट करें).

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

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

Jetpack SDK टूल की मदद से Android 14 के एपीआई टेस्ट करना

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

अगर आपको Android डेवलपर प्रीव्यू के बिल्ड के मुकाबले अपने समाधान की जांच करनी है, तो तो 7 जून से पहले, मदद के लिए अपने 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>

OEM को पसंद के मुताबिक बनाएं

Android 14 में, Health Connect की निजता और डेटा मैनेजमेंट कंट्रोल मौजूद हैं चुनें.

डेटा मैनेजमेंट और अनुमतियों की स्क्रीन को, Health Connect, ओईएम के लिए कस्टम ओवरले की सुविधा देता है.

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