মননশীলতা ট্র্যাক

এই নির্দেশিকাটি হেলথ কানেক্ট সংস্করণ 1.1.0-rc01 এর সাথে সামঞ্জস্যপূর্ণ।

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

হেলথ কানেক্ট-এর প্রাপ্যতা যাচাই করুন

হেলথ কানেক্ট ব্যবহার করার চেষ্টা করার আগে, আপনার অ্যাপের যাচাই করে নেওয়া উচিত যে ব্যবহারকারীর ডিভাইসে হেলথ কানেক্ট উপলব্ধ আছে কিনা। সব ডিভাইসে হেলথ কানেক্ট আগে থেকে ইনস্টল করা নাও থাকতে পারে বা এটি নিষ্ক্রিয় করা থাকতে পারে। আপনি HealthConnectClient.getSdkStatus() মেথড ব্যবহার করে এর উপলব্ধতা পরীক্ষা করতে পারেন।

হেলথ কানেক্ট-এর প্রাপ্যতা কীভাবে পরীক্ষা করবেন

fun checkHealthConnectAvailability(context: Context) {
    val providerPackageName = "com.google.android.apps.healthdata" // Or get from HealthConnectClient.DEFAULT_PROVIDER_PACKAGE_NAME
    val availabilityStatus = HealthConnectClient.getSdkStatus(context, providerPackageName)

    if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE) {
      // Health Connect is not available. Guide the user to install/enable it.
      // For example, show a dialog.
      return // early return as there is no viable integration
    }
    if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED) {
      // Health Connect is available but requires an update.
      // Optionally redirect to package installer to find a provider, for example:
      val uriString = "market://details?id=$providerPackageName&url=healthconnect%3A%2F%2Fonboarding"
      context.startActivity(
        Intent(Intent.ACTION_VIEW).apply {
          setPackage("com.android.vending")
          data = Uri.parse(uriString)
          putExtra("overlay", true)
          putExtra("callerId", context.packageName)
        }
      )
      return
    }
    // Health Connect is available, obtain a HealthConnectClient instance
    val healthConnectClient = HealthConnectClient.getOrCreate(context)
    // Issue operations with healthConnectClient
}

getSdkStatus() থেকে প্রাপ্ত স্ট্যাটাসের উপর নির্ভর করে, প্রয়োজনে আপনি ব্যবহারকারীকে গুগল প্লে স্টোর থেকে হেলথ কানেক্ট ইনস্টল বা আপডেট করার জন্য নির্দেশনা দিতে পারেন।

বৈশিষ্ট্যের প্রাপ্যতা

কোনো ব্যবহারকারীর ডিভাইস হেলথ কানেক্ট-এ মাইন্ডফুলনেস সেশন রেকর্ড সমর্থন করে কিনা তা নির্ধারণ করতে, ক্লায়েন্টে FEATURE_MINDFULNESS_SESSION এর প্রাপ্যতা পরীক্ষা করুন:

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_MINDFULNESS_SESSION
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}
আরও জানতে ‘ফিচারের প্রাপ্যতা যাচাই করুন’ দেখুন।

প্রয়োজনীয় অনুমতি

মাইন্ডফুলনেস ব্যবহারের সুযোগ নিম্নলিখিত অনুমতিগুলো দ্বারা সুরক্ষিত:

  • android.permission.health.READ_MINDFULNESS
  • android.permission.health.WRITE_MINDFULNESS

আপনার অ্যাপে মাইন্ডফুলনেস সক্ষমতা যোগ করতে, প্রথমে MindfulnessSession ডেটা টাইপের জন্য অনুমতির অনুরোধ করুন।

মাইন্ডফুলনেস নিয়ে লেখার জন্য আপনার যে অনুমতিটি ঘোষণা করতে হবে তা এখানে দেওয়া হলো:

<application>
  <uses-permission
android:name="android.permission.health.WRITE_MINDFULNESS" />
...
</application>

মাইন্ডফুলনেস পড়তে হলে, আপনাকে নিম্নলিখিত অনুমতিগুলো অনুরোধ করতে হবে:

<application>
  <uses-permission
android:name="android.permission.health.READ_MINDFULNESS" />
...
</application>

ব্যবহারকারীর কাছ থেকে অনুমতি অনুরোধ করুন

একটি ক্লায়েন্ট ইনস্ট্যান্স তৈরি করার পরে, আপনার অ্যাপকে ব্যবহারকারীর কাছ থেকে অনুমতির জন্য অনুরোধ করতে হবে। ব্যবহারকারীদের যেকোনো সময় অনুমতি প্রদান বা প্রত্যাখ্যান করার ক্ষমতা থাকতে হবে। এটি করার জন্য, প্রয়োজনীয় ডেটা টাইপগুলির জন্য এক সেট অনুমতি তৈরি করুন। প্রথমে নিশ্চিত করুন যে সেটের অনুমতিগুলি আপনার অ্যান্ড্রয়েড ম্যানিফেস্টে ঘোষিত হয়েছে।

val permissions =
    setOf(
        HealthPermission.getReadPermission(MindfulnessSessionRecord::class),
        HealthPermission.getWritePermission(MindfulnessSessionRecord::class)
    )
আপনার অ্যাপে প্রয়োজনীয় অনুমতিগুলো আগে থেকেই দেওয়া আছে কিনা তা দেখতে getGrantedPermissions ব্যবহার করুন। যদি না থাকে, তাহলে সেই অনুমতিগুলোর জন্য অনুরোধ করতে createRequestPermissionResultContract ব্যবহার করুন। এটি হেলথ কানেক্ট পারমিশন স্ক্রিনটি প্রদর্শন করবে।
val permissions = setOf(
        HealthPermission.getReadPermission(StepsRecord::class),
        HealthPermission.getWritePermission(StepsRecord::class),
        HealthPermission.getReadPermission(HeartRateRecord::class),
        HealthPermission.getWritePermission(HeartRateRecord::class)
    )

val requestPermissionsLauncher = rememberLauncherForActivityResult(
    contract = PermissionController.createRequestPermissionResultContract()
) { grantedPermissions ->
    if (grantedPermissions.containsAll(permissions)) {
        coroutineScope.launch { snackbarHostState.showSnackbar("Permissions granted!") }
    } else {
        coroutineScope.launch { snackbarHostState.showSnackbar("Permissions denied.") }
    }
}
যেহেতু ব্যবহারকারীরা যেকোনো সময় অনুমতি দিতে বা প্রত্যাহার করতে পারেন, তাই আপনার অ্যাপকে প্রতিবার ব্যবহারের আগে অনুমতি যাচাই করতে হবে এবং অনুমতি হারিয়ে গেলে তার মোকাবিলা করতে হবে।

মাইন্ডফুলনেস সেশন রেকর্ডে অন্তর্ভুক্ত তথ্য

প্রতিটি মাইন্ডফুলনেস সেশন রেকর্ডে ব্যবহারকারীর করা যেকোনো ধরনের মাইন্ডফুলনেস সেশন, যেমন—মেডিটেশন, শ্বাস-প্রশ্বাস এবং নড়াচড়া, নথিভুক্ত থাকে। এই রেকর্ডে সেশনটি সম্পর্কে অতিরিক্ত নোটও অন্তর্ভুক্ত থাকতে পারে।

MindfulnessSessionRecord জন্য নিম্নলিখিত মাইন্ডফুলনেস সেশন প্রকারগুলি উপলব্ধ রয়েছে:

  • MINDFULNESS_SESSION_TYPE_UNKNOWN
  • MINDFULNESS_SESSION_TYPE_MEDITATION
  • MINDFULNESS_SESSION_TYPE_BREATHING
  • MINDFULNESS_SESSION_TYPE_MUSIC
  • MINDFULNESS_SESSION_TYPE_MOVEMENT
  • MINDFULNESS_SESSION_TYPE_UNGUIDED

মাইন্ডফুলনেস সেশনের প্রকারভেদগুলোর সম্পূর্ণ তালিকার জন্য, MindfulnessSessionRecord রেফারেন্স ডকুমেন্টেশন দেখুন।

সমর্থিত সমষ্টি

MindfulnessSessionRecord জন্য নিম্নলিখিত সমষ্টিগত মানগুলি উপলব্ধ:

মাইন্ডফুলনেস সেশন লিখুন

নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে একটি মাইন্ডফুলনেস সেশন লিখতে হয়:

val isAvailable = healthConnectClient.features.getFeatureStatus(FEATURE_MINDFULNESS_SESSION)

if (isAvailable == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

    val record = MindfulnessSessionRecord(
        startTime = Instant.now().minus(Duration.ofHours(1)),
        startZoneOffset = ZoneOffset.UTC,
        endTime = Instant.now(),
        endZoneOffset = ZoneOffset.UTC,
        mindfulnessSessionType = MindfulnessSessionRecord.MINDFULNESS_SESSION_TYPE_MEDITATION,
        title = "Lake meditation",
        notes = "Meditation by the lake",
        metadata = Metadata(
            clientRecordId = "myid",
            clientRecordVersion = 1L,
            device = Device(type = Device.TYPE_PHONE)
        )
    )

মাইন্ডফুলনেস সেশন পড়ুন

নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে একটি নির্দিষ্ট সময়সীমার মধ্যে একটি মাইন্ডফুলনেস সেশন পড়া যায়:

Val now = Instant.now()

val records = healthConnectClient.readRecords(
    ReadRecordsRequest(
        recordType = MindfulnessSessionRecord::class,
        timeRangeFilter = TimeRangeFilter.between(
            startTime = now.minus(Duration.ofHours(5)),
            endTime = now
        )
    )
)

// Process the returned records
records.records.forEach { session ->
    println("Mindfulness session:")
    println("Start: ${session.startTime}")
    println("End: ${session.endTime}")
    println("Title: ${session.title}")
    println("Notes: ${session.notes}")
    println("Type: ${session.mindfulnessSessionType}")
}