ঘুমের সেশন ট্র্যাক করুন

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

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

সেশনগুলি ব্যবহারকারীদের একটি নির্দিষ্ট সময়ের মধ্যে সময়-ভিত্তিক কর্মক্ষমতা পরিমাপ করতে দেয়, যেমন ক্রমাগত হার্ট রেট বা অবস্থান ডেটা।

SleepSessionRecord সেশনগুলিতে এমন ডেটা থাকে যা ঘুমের পর্যায়গুলি রেকর্ড করে, যেমন AWAKE , SLEEPING এবং DEEP

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

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

এই ডেটা টাইপের জন্য কোনও বৈশিষ্ট্য উপলব্ধতা পতাকা নেই৷

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

ঘুমের সেশনে অ্যাক্সেস নিম্নলিখিত অনুমতি দ্বারা সুরক্ষিত:

  • android.permission.health.READ_SLEEP
  • android.permission.health.WRITE_SLEEP

আপনার অ্যাপের জন্য প্লে কনসোলে, সেইসাথে আপনার অ্যাপের ম্যানিফেস্টে এই অনুমতিগুলি ঘোষণা করুন:

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

আপনি আপনার ডিভাইস এবং অ্যাপ্লিকেশানগুলিতে ব্যবহার করতে চান এমন সমস্ত উপযুক্ত অনুমতি ঘোষণা করার জন্য আপনি দায়ী৷ ব্যবহার করার আগে ব্যবহারকারীর দ্বারা প্রতিটি অনুমতি দেওয়া হয়েছে কিনা তাও আপনার পরীক্ষা করা উচিত

সাধারণ নির্দেশিকা

হেলথ কানেক্টে ঘুমের সেশনের সাথে কীভাবে কাজ করতে হয় সে সম্পর্কে এখানে কিছু সেরা অনুশীলন নির্দেশিকা রয়েছে।

  • ঘুমের জন্য একটি নির্দিষ্ট ঘুমের সেশন থেকে ডেটা যোগ করতে সেশনগুলি ব্যবহার করা উচিত:
suspend fun writeSleepSession(healthConnectClient: HealthConnectClient) {
    healthConnectClient.insertRecords(
        listOf(
            SleepSessionRecord(
                startTime = Instant.parse("2022-05-10T23:00:00.000Z"),
                startZoneOffset = ZoneOffset.of("-08:00"),
                endTime = Instant.parse("2022-05-11T07:00:00.000Z"),
                endZoneOffset = ZoneOffset.of("-08:00"),
                title = "My Sleep"
            ),
        )
    )
}
  • সেশনগুলি সাধারণ পরিমাপের জন্য ব্যবহার করা উচিত নয় , যেমন দৈনিক ধাপের সংখ্যা।
  • সাবটাইপ ডেটাতে একটি UID থাকে না, তবে সংশ্লিষ্ট ডেটাতে স্বতন্ত্র UID থাকে।
  • সাবটাইপ ডেটাকে একটি সেশনে সারিবদ্ধ করা প্রয়োজন যাতে ওভারল্যাপ হয় না এমন ক্রমিক টাইমস্ট্যাম্প। ফাঁক অনুমোদিত, তবে.
  • যদি ব্যবহারকারী একটি সেশনের সাথে ডেটা যুক্ত করতে চান (এবং এর অংশ হিসাবে ট্র্যাক করতে চান) তবে সেশনগুলি উপযোগী হয়, ক্রমাগত রেকর্ড না করে।

ঘুমের সেশন

আপনি Health Connect-এ ঘুমের ডেটা পড়তে বা লিখতে পারেন। ঘুমের ডেটা একটি সেশন হিসাবে প্রদর্শিত হয় এবং 8টি স্বতন্ত্র ঘুমের পর্যায়ে বিভক্ত করা যেতে পারে:

  • UNKNOWN : ব্যবহারকারী ঘুমাচ্ছেন কিনা তা অনির্দিষ্ট বা অজানা।
  • AWAKE : ব্যবহারকারী ঘুমের চক্রের মধ্যে জেগে থাকে, দিনের বেলা নয়।
  • SLEEPING : সাধারণ বা অ দানাদার ঘুমের বিবরণ।
  • OUT_OF_BED : ব্যবহারকারী একটি ঘুমের সেশনের মাঝখানে বিছানা থেকে উঠে যায়।
  • AWAKE_IN_BED : ব্যবহারকারী বিছানায় জেগে আছে।
  • LIGHT : ব্যবহারকারী একটি হালকা ঘুমের চক্রে রয়েছে৷
  • DEEP : ব্যবহারকারী একটি গভীর ঘুমের চক্রে রয়েছে৷
  • REM : ব্যবহারকারী একটি REM ঘুমের চক্রে রয়েছে৷

এই মানগুলি একটি সময় সীমার মধ্যে একজন ব্যবহারকারীর ঘুমের ধরনের প্রতিনিধিত্ব করে। ঘুমের পর্যায়গুলি লেখা ঐচ্ছিক, তবে উপলব্ধ হলে সুপারিশ করা হয়।

ঘুমের সেশন লিখুন

SleepSessionRecord ডেটা টাইপের দুটি অংশ রয়েছে:

  1. সামগ্রিক অধিবেশন, ঘুমের পুরো সময়কাল জুড়ে।
  2. ঘুমের সময় স্বতন্ত্র পর্যায় যেমন হালকা ঘুম বা গভীর ঘুম।

এখানে আপনি কিভাবে পর্যায় ছাড়াই একটি ঘুমের অধিবেশন সন্নিবেশ করান:

SleepSessionRecord(
      title = "weekend sleep",
      startTime = startTime,
      endTime = endTime,
      startZoneOffset = ZoneOffset.UTC,
      endZoneOffset = ZoneOffset.UTC,
)

ঘুমের সেশনের পুরো সময়কে কভার করে এমন পর্যায়গুলি কীভাবে যুক্ত করবেন তা এখানে রয়েছে:

val stages = listOf(
    SleepSessionRecord.Stage(
        startTime = START_TIME
        endTime = END_TIME,
        stage = SleepSessionRecord.STAGE_TYPE_SLEEPING,
    )
)

SleepSessionRecord(
        title = "weekend sleep",
        startTime = START_TIME,
        endTime = END_TIME,
        startZoneOffset = START_ZONE_OFFSET,
        endZoneOffset = END_ZONE_OFFSET,
        stages = stages,
)

একটি ঘুম অধিবেশন পড়ুন

ফিরে আসা প্রতিটি ঘুমের সেশনের জন্য, আপনার ঘুমের পর্যায়ের ডেটাও উপস্থিত আছে কিনা তা পরীক্ষা করা উচিত:

suspend fun readSleepSessions(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    val response =
        healthConnectClient.readRecords(
            ReadRecordsRequest(
                SleepSessionRecord::class,
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
            )
        )
    for (sleepRecord in response.records) {
        // Retrieve relevant sleep stages from each sleep record
        val sleepStages = sleepRecord.stages
    }
}

একটি ঘুম অধিবেশন মুছুন

এইভাবে একটি সেশন মুছে ফেলতে হয়। এই উদাহরণের জন্য, আমরা একটি ঘুমের অধিবেশন ব্যবহার করেছি:

suspend fun deleteSleepSession(
    healthConnectClient: HealthConnectClient,
    sleepRecord: SleepSessionRecord,
) {
    val timeRangeFilter = TimeRangeFilter.between(sleepRecord.startTime, sleepRecord.endTime)
    healthConnectClient.deleteRecords(SleepSessionRecord::class, timeRangeFilter)
}