Android 13 (APK) থেকে Android 14 (ফ্রেমওয়ার্ক) এ হেলথ কানেক্ট মাইগ্রেট করুন

হেলথ কানেক্ট অ্যান্ড্রয়েড 14 এর সাথে ভোক্তা স্বাস্থ্য ডেটার জন্য একটি সাধারণ ডেটা স্টোরেজ স্তর হিসাবে প্যাকেজ করা হবে, দানাদার অনুমতি দ্বারা সুরক্ষিত এবং একটি Android সিস্টেম অ্যাপ হিসাবে অ্যাক্সেসযোগ্য (এই ডকুমেন্ট জুড়ে 'ফ্রেমওয়ার্ক' মডিউল হিসাবে উল্লেখ করা হয়েছে)।

ডেভেলপারদের হেলথ কানেক্ট APK (Android 13) কে ফ্রেমওয়ার্ক মডেলের জন্য পিছনের সামঞ্জস্যপূর্ণ স্তর হিসাবে বিবেচনা করা উচিত। ফ্রেমওয়ার্ক মডেলটি তার APK পূর্বসূরীর সাথে 100% বৈশিষ্ট্য সমতা বজায় রাখবে।

অ্যান্ড্রয়েড 13 থেকে 14 রূপান্তরের সময়, এটি অত্যন্ত গুরুত্বপূর্ণ যে ব্যবহারকারীর অভিজ্ঞতা যতটা সম্ভব মসৃণ এবং স্বজ্ঞাত থাকে।

এই নথিটি মাইগ্রেশন পরিকল্পনার রূপরেখা দেয়, কিছু উদাহরণ মাইগ্রেশন পরিস্থিতি প্রদান করে এবং Jetpack SDK-তে পরিবর্তনগুলি তালিকাভুক্ত করে, যা Health Connect API-তে অ্যাক্সেসের সুবিধা দেয়।

মাইগ্রেশন পরিকল্পনা

  1. একবার Android 14 প্রকাশিত হলে, Google একটি Android সিস্টেম অ্যাপ হিসাবে Health Connect প্রদান করতে স্যুইচ করবে।
  2. বৈশিষ্ট্য সমতা অর্জন করার পরে APK থেকে ডেটা ব্যাকফিল করা হবে।
  3. সমস্ত এন্ট্রি পয়েন্ট সিস্টেম অ্যাপ UI লক্ষ্য করবে।
  4. ডেটা মাইগ্রেশন শুরু হবে। মাইগ্রেশন চলাকালীন, মডিউল API গুলিকে 'প্রক্রিয়ায় মাইগ্রেশন' স্ট্যাটাস সহ সাসপেন্ড করা হবে। এটি Health Connect UI-এর মধ্যেও দৃশ্যমান হবে৷
  5. মাইগ্রেশন সম্পূর্ণ হলে, APK আনইনস্টল করা যাবে।

মাইগ্রেশন পরিস্থিতির উদাহরণ

এখানে কিছু উদাহরণ রয়েছে যা interval এবং series ডেটা প্রকার উভয়ের জন্য মাইগ্রেশন প্রক্রিয়া ব্যাখ্যা করে:

উদাহরণ 1 - চলমান (ব্যবধান ডেটা)

একজন ব্যবহারকারী প্রতিদিন 1 ঘন্টা ধরে 10 বছরের চলমান রেকর্ড সংগ্রহ করেছেন। এটি এর সমতুল্য:

  • ব্যায়াম সেশন রেকর্ডস: 365 * 10 * 1
  • ধাপ: 365 * 10 * 1
  • ক্যালোরি: 365 * 10 * 1
  • মোট = 365 * 10 * 3 (365 * 30) = 10,150

প্রদত্ত যে 1 খণ্ডটি 3,000 রেকর্ডের সমান, উপরের ডেটা মোট 4 খণ্ডের কাছাকাছি।

আমাদের অভ্যন্তরীণ পরীক্ষা নিশ্চিত করেছে যে একটি সাধারণ অংশ সন্নিবেশ করতে প্রায় এক সেকেন্ড সময় নেয়, তাই উপরের ডেটা প্রায় 4 সেকেন্ডের মধ্যে স্থানান্তরিত হবে।

উদাহরণ 2 - হার্ট রেট (সিরিজ ডেটা)

একজন ব্যবহারকারী 5 বছরের হার্ট রেট ডেটা সংগ্রহ করেছেন (প্রতি মিনিটে একটি রেকর্ড তৈরি করে) মোট 2,628,000 রেকর্ড।

প্রতি খণ্ডে 3,000 রেকর্ডে, ডেটা 876 খণ্ড জুড়ে বিতরণ করা হয়। প্রদত্ত যে 1 খণ্ড সন্নিবেশ করতে প্রায় এক সেকেন্ড সময় নেয়, ডেটা 15 মিনিটের মধ্যে স্থানান্তরিত হবে।

প্রস্তাবিত মাইগ্রেশন প্রবাহ

আমরা একটি তাত্ক্ষণিক স্থানান্তর বেছে নেওয়ার সিদ্ধান্ত নিয়েছি। ব্যবহারিক ভাষায়, এর মানে হল যে ডিভাইসটি Android 14-এ আপগ্রেড হওয়ার সাথে সাথেই APK নিষ্ক্রিয় হয়ে যাবে, ব্যবহারকারীর ন্যূনতম হস্তক্ষেপ সহ।

আসুন একটি উচ্চ-স্তরের মাইগ্রেশন ফ্লো একবার দেখে নেওয়া যাক:

  1. ব্যবহারকারী তাদের ডিভাইস Android 14 এ আপগ্রেড করে।
  2. জেটপ্যাক 14 ব্যবহারকারীকে মডিউল API-এ রুট করে এবং মাইগ্রেশন চলাকালীন সেগুলিকে ব্লক করে।
  3. স্থানান্তর প্রক্রিয়া শুরু হয় যখন মডিউল সংস্করণটি APK-এর সাথে সামঞ্জস্যপূর্ণ বৈশিষ্ট্য - অর্থাৎ মডিউল সংস্করণে একই বৈশিষ্ট্য সেট বা আরও বেশি থাকে৷ একবার মাইগ্রেশন প্রক্রিয়া শুরু হয়ে গেলে, APK অনুমতি এবং ডেটা স্থানান্তর করে।
    1. উভয় সংস্করণ বৈশিষ্ট্য সামঞ্জস্যপূর্ণ না হলে, মডিউল সংস্করণ আপগ্রেড করা প্রয়োজন হবে. আপগ্রেড সম্পূর্ণ হলে, মাইগ্রেশন প্রক্রিয়া শুরু হবে।
  4. একবার মাইগ্রেশন সম্পন্ন হলে, স্টেটটি 'মাইগ্রেশন কমপ্লিট'-এ পরিবর্তিত হয় এবং মডিউল API গুলি আনব্লক করা হয়।
  5. APK এখন আনইনস্টল করা যাবে।

মাইগ্রেশন UI উপাদান

মাইগ্রেশনের আগে এবং সময় উভয় ক্ষেত্রেই ব্যবহারকারী শিক্ষার উদ্দেশ্যে ফ্রেমওয়ার্ক মডিউল দ্বারা নিম্নলিখিত স্ক্রীনগুলি প্রদর্শিত হয়:

চিত্র 1. যদি হেলথ কানেক্ট APK 'মাইগ্রেশন সচেতন' না হয়, তাহলে একটি প্রম্পট প্রদর্শিত হয় যাতে ব্যবহারকারীকে APK আপডেট করার নির্দেশ দেওয়া হয়। ব্যবহারকারী আপডেট প্রত্যাখ্যান করলে, মডিউলটি কাজ করতে থাকে এবং অনুমতি এবং ডেটা জমা করা শুরু করে:

ফোন আপডেট প্রয়োজন


চিত্র 2. যদি ফ্রেমওয়ার্ক মডিউলটির বৈশিষ্ট্য সামঞ্জস্যপূর্ণ হওয়ার জন্য একটি আপডেটের প্রয়োজন হয়, তাহলে ব্যবহারকারীকে আপডেটটি সম্পাদন করতে এবং তাদের ডিভাইসটি পুনরায় বুট করার জন্য একটি প্রম্পট প্রদর্শিত হয়। ব্যবহারকারী আপডেট প্রত্যাখ্যান করলে, মডিউলটি কাজ করতে থাকে এবং অনুমতি এবং ডেটা জমা করা শুরু করে:

APK আপডেট প্রয়োজন


চিত্র 3. মাইগ্রেশন প্রক্রিয়া চলাকালীন একটি স্পিনার প্রদর্শিত হয়, যেখানে ডেটা সিঙ্ক হচ্ছে তা ব্যাখ্যা করার জন্য পাঠ্য সহ:

ডেটা সিঙ্কিং

ডিডুড করা ডেটা

যদি ফ্রেমওয়ার্ক মডিউল কোনো মাইগ্রেশন বা ক্লাউড-ভিত্তিক পুনরুদ্ধার হওয়ার আগে ডেটা এবং অনুমতিগুলি অর্জন করতে শুরু করে, তাহলে নিম্নলিখিত নিয়মগুলি প্রযোজ্য।

অনুমতি

যদি অনুমতিগুলি ফ্রেমওয়ার্ক মডিউলের মধ্যে উপস্থিত থাকে, তবে স্থানান্তর প্রক্রিয়া চলাকালীন APK থেকে অর্জিত যেকোনো ডুপ্লিকেট অনুমতি উপেক্ষা করা হয়।

ডেটা

মাইগ্রেশনের সময়, APK থেকে উদ্ভূত ডুপ্লিকেট ডেটা উপেক্ষা করা হয়। মডিউল থেকে আরো সাম্প্রতিক তথ্য অগ্রাধিকার দেওয়া হয়.

ক্লায়েন্ট দ্বারা রেকর্ড আইডি প্রদান করা হলে clientRecordId ডেটা কেটে নেওয়া হয়। যদি তা না হয়, অ্যাপের ডেটা টাইপ এবং প্যাকেজের নাম সহ সময়ের ব্যবধান (অভ্যন্তরীণ রেকর্ডের জন্য startTime এবং endTime , এবং তাত্ক্ষণিক রেকর্ডের জন্য time ) কী হিসাবে বিবেচিত হয়।

Jetpack SDK-তে পরিবর্তন

জেটপ্যাক SDK হেলথ কানেক্ট APK এবং হেলথ কানেক্ট ফ্রেমওয়ার্ক API উভয়ের জন্যই সাধারণ ইন্টিগ্রেশন পয়েন্ট হিসেবে কাজ করে।

OEMগুলি জেটপ্যাক 13 এর সাথে একীভূত হওয়া শুরু করতে পারে যাতে জেটপ্যাক 14 উপলব্ধ হলে, আপনি নতুন লাইব্রেরিটি উপযুক্ত করতে এবং এটিকে Android 14 এর মধ্যে কম্পাইল করতে সক্ষম হন।

আমরা SDK-এর একটি নতুন সংস্করণ প্রকাশ করব যা Android 14-এ রূপান্তর সমর্থন করে৷ একটি মসৃণ রূপান্তর নিশ্চিত করতে আপনাকে আপনার বিদ্যমান ইন্টিগ্রেশনে কিছু পরিবর্তন করতে হবে৷

অনুমতি ঘোষণা

অ্যান্ড্রয়েড 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>

স্বাস্থ্য সংযোগ খুলুন

বেশিরভাগ তৃতীয় পক্ষের অ্যাপে একটি বোতাম থাকে যা হেলথ কানেক্ট অ্যাপ খোলে, যেমন ফিটবিটে 'অ্যাক্সেস পরিচালনা করুন' বোতাম।

Android 13-এ, আপনি হয় প্যাকেজের নাম ব্যবহার করে Health Connect অ্যাপ খুলবেন, অথবা androidx.health.ACTION_HEALTH_CONNECT_SETTINGS অ্যাকশনের মাধ্যমে।

অ্যান্ড্রয়েড 14-এ, আপনাকে জেটপ্যাক SDK-তে নির্দিষ্ট করা একটি অভিপ্রায় ক্রিয়া ব্যবহার করতে হবে, যেটির Android সংস্করণের উপর ভিত্তি করে বিভিন্ন মান রয়েছে:

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

হেলথ কানেক্ট ক্লায়েন্ট পাচ্ছেন

আমরা sdkStatus নামে একটি একক API তৈরি করেছি, জেটপ্যাক 11-এ উপলব্ধ, অন্য দুটি অবচয়িত API-কে প্রতিস্থাপন করতে - IsSdkSupported() এবং isProviderAvailable()

সেশন রেকর্ড API পরিবর্তন

আলফা 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 দিনের জন্য সমস্ত ডেটা পড়ুন এবং অনুমান করুন

হেলথ কানেক্ট থেকে একটি অ্যাপ শেষবার কখন ডেটা পড়ে তার একটি টাইমস্ট্যাম্প সংরক্ষণ করুন। টোকেনের মেয়াদ শেষ হলে, এই মান থেকে ডেটা পুনরায় পড়তে হবে, অথবা আগের 30 দিন (যেটি সর্বনিম্ন সমান হবে), এবং UUID ব্যবহার করে পূর্বে পড়া ডেটার বিপরীতে এটিকে অনুমান করতে হবে।

2. 'শেষ পড়া' টাইমস্ট্যাম্প থেকে ডেটা পড়ুন

একটি টাইমস্ট্যাম্প স্থাপন করুন যা নির্দেশ করে যে কখন Health Connect থেকে ডেটা শেষবার পড়া হয়েছিল এবং টোকেনের মেয়াদ শেষ হওয়ার পরে, সেই মানের পরে সমস্ত ডেটা পড়ুন৷

3. গত 30 দিনের ডেটা মুছুন এবং পুনরায় পড়ুন

হেলথ কানেক্ট থেকে আগের 30 দিন থেকে পড়া সমস্ত ডেটা মুছুন এবং সেই সমস্ত ডেটা আবার পড়ুন (যেমন অ্যাপ্লিকেশানগুলি যখন প্রথম Health Connect-এর সাথে একীভূত হয় তখন করা হয়)৷

4. কিছুই করবেন না (যেমন গত 30 দিনের ডেটা পুনরায় পড়ুন এবং অনুমান করবেন না)

এটি একটি শেষ অবলম্বন হিসাবে ব্যবহার করা উচিত, ডুপ্লিকেট ডেটা প্রদর্শনের ঝুঁকির সাথে। বিকাশকারীদের পরিবর্তে 1-3 বিকল্পগুলি অন্বেষণ করা উচিত, কারণ UUIDগুলি ইতিমধ্যেই থাকা উচিত৷

Jetpack SDK এর সাথে Android 14 APIs পরীক্ষা করা হচ্ছে

অ্যান্ড্রয়েড 14 জেটপ্যাক SDK 7 জুন 2023-এ Android 14-এর বিটা 3 রিলিজের সাথে রিলিজ হওয়ার জন্য সেট করা হয়েছে। Android 14 জেটপ্যাক SDK ব্যবহার করতে সক্ষম হওয়ার জন্য আপনাকে Android 14 এর সাথে আপনার অ্যাপ কম্পাইল করা শুরু করতে হবে।

আপনি যদি 7 জুনের আগে Android বিকাশকারী প্রিভিউ বিল্ডের বিরুদ্ধে আপনার সমাধান পরীক্ষা করতে চান, তাহলে সহায়তার জন্য আপনার Google POC-এর সাথে যোগাযোগ করুন।

আপনি যদি বিটা 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 থিমিং অফার করে।

OEM স্টাইলিং সংক্রান্ত ডকুমেন্টেশনের জন্য, Health Connect Google Mobile Services ডকুমেন্টেশন দেখুন।