MeasureClient দিয়ে স্পট স্বাস্থ্য পরিমাপ নিন

MeasureClient API-এর সাহায্যে, আপনার অ্যাপ অল্প সময়ের জন্য ডেটা পাওয়ার জন্য কলব্যাক নিবন্ধন করে। এটি এমন পরিস্থিতিতে বোঝানো হয়েছে যেখানে আপনার অ্যাপ ব্যবহার করা হচ্ছে এবং দ্রুত ডেটা আপডেটের প্রয়োজন। যদি সম্ভব হয়, একটি ফোরগ্রাউন্ড UI দিয়ে এটি তৈরি করুন যাতে ব্যবহারকারী সচেতন হয়।

নির্ভরতা যোগ করুন

স্বাস্থ্য পরিষেবার উপর নির্ভরতা যোগ করতে, আপনাকে অবশ্যই আপনার প্রকল্পে Google Maven সংগ্রহস্থল যোগ করতে হবে। আরও তথ্যের জন্য, Google এর Maven সংগ্রহস্থল দেখুন।

তারপর, আপনার মডিউল-স্তরের build.gradle ফাইলে, নিম্নলিখিত নির্ভরতা যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.health:health-services-client:1.1.0-alpha03"
}

কোটলিন

dependencies {
    implementation("androidx.health:health-services-client:1.1.0-alpha03")
}

ক্ষমতা পরীক্ষা করুন

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

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি ডিভাইস HEART_RATE_BPM ডেটা টাইপ প্রদান করতে পারে কিনা তা পরীক্ষা করতে হয়:

val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
lifecycleScope.launch {
    val capabilities = measureClient.getCapabilitiesAsync().await()
    supportsHeartRate = DataType.HEART_RATE_BPM in capabilities.supportedDataTypesMeasure
}

ডেটার জন্য নিবন্ধন করুন

আপনার নিবন্ধিত প্রতিটি কলব্যাক একটি একক ডেটা টাইপের জন্য। মনে রাখবেন যে কিছু ডেটা প্রকারের উপলব্ধতার বিভিন্ন অবস্থা থাকতে পারে। উদাহরণস্বরূপ, যখন ডিভাইসটি কব্জির সাথে সঠিকভাবে সংযুক্ত না থাকে তখন হার্ট রেট ডেটা উপলব্ধ নাও হতে পারে৷

আপনার কলব্যাক নিবন্ধিত হওয়ার পরিমাণ কমিয়ে আনা গুরুত্বপূর্ণ, কারণ কলব্যাকগুলি সেন্সর স্যাম্পলিং রেট বাড়ায়, যার ফলে শক্তি খরচ বেড়ে যায়।

HEART_RATE_BPM ডেটা পাওয়ার জন্য কীভাবে একটি কলব্যাক নিবন্ধন এবং আনরেজিস্টার করতে হয় তা নিম্নলিখিত উদাহরণটি দেখায়:

val heartRateCallback = object : MeasureCallback {
    override fun onAvailabilityChanged(dataType: DeltaDataType<*, *>, availability: Availability) {
        if (availability is DataTypeAvailability) {
            // Handle availability change.
        }
    }

    override fun onDataReceived(data: DataPointContainer) {
        // Inspect data points.
    }
}
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient

// Register the callback.
measureClient.registerMeasureCallback(DataType.Companion.HEART_RATE_BPM, heartRateCallback)

// Unregister the callback.
awaitClose {
    runBlocking {
        measureClient.unregisterMeasureCallbackAsync(DataType.Companion.HEART_RATE_BPM, heartRateCallback)
    }
}