ত্বকের তাপমাত্রা পরিমাপ করুন

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

হেলথ কানেক্ট শরীরের প্রান্তীয় তাপমাত্রা পরিমাপের জন্য একটি ত্বকের তাপমাত্রা ডেটা টাইপ প্রদান করে। এই পরিমাপটি ঘুমের গুণমান, প্রজনন স্বাস্থ্য এবং অসুস্থতার সম্ভাব্য সূত্রপাত শনাক্ত করার জন্য একটি বিশেষভাবে উপযোগী সংকেত।

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

হেলথ কানেক্ট ব্যবহার করার চেষ্টা করার আগে, আপনার অ্যাপের যাচাই করে নেওয়া উচিত যে ব্যবহারকারীর ডিভাইসে হেলথ কানেক্ট উপলব্ধ আছে কিনা। সব ডিভাইসে হেলথ কানেক্ট আগে থেকে ইনস্টল করা নাও থাকতে পারে বা এটি নিষ্ক্রিয় করা থাকতে পারে। আপনি 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_SKIN_TEMPERATURE এর উপলব্ধতা পরীক্ষা করুন:

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

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

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

ত্বকের তাপমাত্রা জানার অধিকার নিম্নলিখিত অনুমতিগুলো দ্বারা সুরক্ষিত:

  • android.permission.health.READ_SKIN_TEMPERATURE
  • android.permission.health.WRITE_SKIN_TEMPERATURE

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

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

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

ত্বকের তাপমাত্রা পরিমাপ করতে, আপনাকে নিম্নলিখিত অনুমতিগুলির জন্য অনুরোধ করতে হবে:

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

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

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

val permissions =
    setOf(
        HealthPermission.getReadPermission(SkinTemperatureRecord::class),
        HealthPermission.getWritePermission(SkinTemperatureRecord::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.") }
    }
}
যেহেতু ব্যবহারকারীরা যেকোনো সময় অনুমতি দিতে বা প্রত্যাহার করতে পারেন, তাই আপনার অ্যাপকে প্রতিবার ব্যবহারের আগে অনুমতি যাচাই করতে হবে এবং অনুমতি হারিয়ে গেলে তার মোকাবিলা করতে হবে।

ত্বকের তাপমাত্রার রেকর্ডে অন্তর্ভুক্ত তথ্য

ত্বকের তাপমাত্রা পরিমাপগুলো রেকর্ডে সংগঠিত করা হয়। প্রতিটি রেকর্ডে নিম্নলিখিত তথ্য থাকে:

  • বেসলাইন তাপমাত্রা , সেলসিয়াস বা ফারেনহাইট ডিগ্রিতে। এটি একটি ঐচ্ছিক মান যা আপনার অ্যাপের UI-তে ভিজ্যুয়ালাইজেশনের জন্য সবচেয়ে উপযোগী।
  • ত্বকের তাপমাত্রার পরিবর্তনগুলোর একটি তালিকা , যেখানে প্রতিটি পরিবর্তন শেষ পরিমাপের পর থেকে ত্বকের তাপমাত্রার পরিবর্তন দেখাবে। যদি ভিত্তি তাপমাত্রা দেওয়া থাকে, তবে এই পরিবর্তনগুলোতেও একই তাপমাত্রার একক ব্যবহার করতে হবে।
  • ব্যবহারকারীর শরীরের যে স্থান থেকে পরিমাপটি নেওয়া হয়েছিল: আঙুল, পায়ের আঙুল বা কবজি।

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

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

উদাহরণ ব্যবহার

নিম্নলিখিত কোড স্নিপেটগুলিতে দেখানো হয়েছে কীভাবে ত্বকের তাপমাত্রার পরিমাপ পড়তে এবং লিখতে হয়।

ত্বকের তাপমাত্রার রেকর্ড পড়ুন

নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে Jetpack লাইব্রেরি ব্যবহার করে ত্বকের তাপমাত্রার পরিমাপ পড়তে হয়:

suspend fun readSkinTemperatures() {
    // Error handling, permission check, and feature availability check
    // aren't included.

    // Record includes measurements during the past hour.
    val recordEndTime = Instant.now()
    val recordStartTime = recordEndTime.minusSeconds(60 * 60)

    val response = healthConnectClient.readRecords(
        ReadRecordsRequest<SkinTemperatureRecord>(
            timeRangeFilter = TimeRangeFilter.between(
                recordStartTime, recordEndTime
            )
        )
    )

    for (skinTemperatureRecord in response.records) {
        // Process each skin temperature record here.
    }
}

ত্বকের তাপমাত্রার একটি রেকর্ড লিখুন

নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে Jetpack লাইব্রেরি ব্যবহার করে ত্বকের তাপমাত্রা পরিমাপ লিখতে হয়:


suspend fun writeSkinTemperatures(): InsertRecordsResponse {
    // Error handling, permission check, and feature availability check
    // aren't included.

    // Record includes measurements during the past hour.
    val recordEndTime: ZonedDateTime = now()
    val recordStartTime: ZonedDateTime = recordEndTime.minusHours(1)

    healthConnectClient.insertRecords(
        // For this example, there's only one skin temperature record.
        listOf(
            SkinTemperatureRecord(
                baseline = Temperature.celsius(37.0),
                startTime = recordStartTime.toInstant(),
                startZoneOffset = recordStartTime.offset,
                endTime = recordEndTime.toInstant(),
                endZoneOffset = recordEndTime.offset,
                deltas = listOf(
                    SkinTemperatureRecord.Delta(
                        recordEndTime.minusMinutes(50).toInstant(), celsius(0.5)
                    ), SkinTemperatureRecord.Delta(
                        recordEndTime.minusMinutes(30).toInstant(), celsius(-0.7)
                    )
                ),
                measurementLocation = SkinTemperatureRecord.MEASUREMENT_LOCATION_FINGER,
                metadata = Metadata.autoRecorded(
                    device = Device(type = Device.TYPE_RING)
                ),
            )
        )
    )
}