यह गाइड, Health Connect के वर्शन 1.1.0-alpha11 के साथ काम करती है.
Health Connect, नींद के सेशन का डेटा टाइप उपलब्ध कराता है. इससे किसी व्यक्ति की नींद के बारे में जानकारी सेव की जा सकती है. जैसे, रात में सोने या दिन में झपकी लेने का समय.
इन सेशन को दिखाने के लिए, SleepSessionRecord
डेटा टाइप का इस्तेमाल किया जाता है.
सेशन की मदद से, लोग समय के हिसाब से परफ़ॉर्मेंस को मेज़र कर सकते हैं. जैसे, लगातार दिल की धड़कन या जगह की जानकारी का डेटा.
SleepSessionRecord
सेशन में ऐसा डेटा होता है जो नींद के चरणों को रिकॉर्ड करता है. जैसे, AWAKE
, SLEEPING
, और DEEP
.
सबटाइप डेटा, सेशन से "जुड़ा" होता है. यह सिर्फ़ तब काम का होता है, जब इसे पैरंट सेशन के साथ पढ़ा जाता है. उदाहरण के लिए, नींद की स्थिति.
सुविधा की उपलब्धता
इस डेटा टाइप के लिए, सुविधा की उपलब्धता का कोई फ़्लैग नहीं है.
ज़रूरी अनुमतियां
नींद के सेशन का डेटा ऐक्सेस करने के लिए, इन अनुमतियों का इस्तेमाल किया जाता है:
android.permission.health.READ_SLEEP
android.permission.health.WRITE_SLEEP
अपने ऐप्लिकेशन के लिए, Play Console में इन अनुमतियों का एलान करें. साथ ही, अपने ऐप्लिकेशन के मेनिफ़ेस्ट में भी इनका एलान करें:
<application>
<uses-permission
android:name="android.permission.health.READ_SLEEP" />
<uses-permission
android:name="android.permission.health.WRITE_SLEEP" />
...
</application>
आपको अपने डिवाइसों और ऐप्लिकेशन में इस्तेमाल की जाने वाली सभी ज़रूरी अनुमतियों के बारे में बताना होगा. आपको यह भी देखना चाहिए कि हर अनुमति का इस्तेमाल करने से पहले, उपयोगकर्ता ने अनुमति दी हो
सामान्य दिशा-निर्देश
Health Connect में नींद के सेशन के साथ काम करने के सबसे सही तरीकों के बारे में यहां बताया गया है.
- नींद के किसी खास सेशन का डेटा जोड़ने के लिए, सेशन का इस्तेमाल किया जाना चाहिए. जैसे, नींद के लिए:
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"
),
)
)
}
- सत्रों का इस्तेमाल, सामान्य मेज़रमेंट के लिए नहीं किया जाना चाहिए. जैसे, रोज़ाना के कदमों की संख्या.
- सबटाइप डेटा में यूआईडी नहीं होता, लेकिन इससे जुड़े डेटा में अलग-अलग यूआईडी होते हैं.
- सब-टाइप के डेटा को एक सेशन में अलाइन किया जाना चाहिए. इसमें टाइमस्टैंप क्रम से होने चाहिए और एक-दूसरे से ओवरलैप नहीं होने चाहिए. हालांकि, इसमें गैप की अनुमति है.
- सेशन तब काम आते हैं, जब उपयोगकर्ता को डेटा को किसी सेशन से जोड़ना हो और उसे लगातार रिकॉर्ड करने के बजाय सेशन के हिस्से के तौर पर ट्रैक करना हो.
नींद के सेशन
Health Connect में नींद का डेटा देखा जा सकता है या उसमें बदलाव किया जा सकता है. नींद के डेटा को एक सेशन के तौर पर दिखाया जाता है. इसे नींद के आठ अलग-अलग चरणों में बांटा जा सकता है:
UNKNOWN
: अगर उपयोगकर्ता सो रहा है, तो यह जानकारी नहीं दी जाती या यह जानकारी अज्ञात होती है.AWAKE
: उपयोगकर्ता नींद के दौरान नहीं, बल्कि दिन में जगा हुआ है.SLEEPING
: नींद के बारे में सामान्य या कम जानकारी.OUT_OF_BED
: उपयोगकर्ता नींद के सेशन के बीच में बिस्तर से उठ जाता है.AWAKE_IN_BED
: उपयोगकर्ता बिस्तर पर लेटा है, लेकिन जाग रहा है.LIGHT
: उपयोगकर्ता हल्की नींद में है.DEEP
: उपयोगकर्ता गहरी नींद में है.REM
: उपयोगकर्ता रैपिड आई मूवमेंट (आरईएम) वाली नींद के साइकल में है.
इन वैल्यू से पता चलता है कि किसी व्यक्ति को तय समयसीमा में किस तरह की नींद आई. नींद की अलग-अलग स्टेज के बारे में लिखना ज़रूरी नहीं है. हालांकि, अगर यह जानकारी उपलब्ध है, तो हमारा सुझाव है कि आप इसे लिखें.
नींद के सेशन का डेटा सेव करने की अनुमति दें
SleepSessionRecord
डेटा टाइप के दो हिस्से होते हैं:
- नींद की पूरी अवधि का सेशन.
- नींद के सेशन के दौरान अलग-अलग चरणों की जानकारी, जैसे कि हल्की नींद या गहरी नींद.
यहां नींद के चरणों के बिना स्लीप सेशन डालने का तरीका बताया गया है:
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)
}