Health Connect में, सेशन वह समयावधि होती है जिसके दौरान उपयोगकर्ता कोई कार्रवाई करता है
गतिविधि. SleepSessionRecord
और ExerciseSessionRecord
डेटा टाइप, दोनों हैं
सत्र.
सेशन की मदद से, उपयोगकर्ता एक तय समयावधि में, समय के आधार पर परफ़ॉर्मेंस को मेज़र कर सकते हैं. जैसे, लगातार धड़कन की दर या जगह की जानकारी का डेटा.
ExerciseSessionRecord
सेशन में दौड़ने से लेकर कई तरह की गतिविधियां शामिल हैं
कॉन्टेंट बनाना भी पसंद है.
SleepSessionRecord
सेशन में नींद के चरणों से जुड़ा डेटा होता है, जैसे कि
AWAKE
, SLEEPING
, और DEEP
.
सबटाइप डेटा वह डेटा होता है जो "जुड़ता है" तक हो सकता है. इसका इस्तेमाल सिर्फ़ तब किया जा सकता है, जब इसे पैरंट सेशन में पढ़ा जाता है, जैसे नींद का चरण, व्यायाम का सेगमेंट.
असोसिएटेड डेटा, क्या Record
डेटा को अलग-अलग या किसी दूसरे डेटा के साथ पढ़ा जा सकता है
सेशन, जैसे कि कदम, धड़कन की दर.
सामान्य दिशा-निर्देश
Health से जुड़े सेशन के साथ काम करने के सबसे सही तरीकों के बारे में यहां कुछ दिशा-निर्देश दिए गए हैं कनेक्ट करें.
- सेशन का इस्तेमाल किसी खास कसरत या गतिविधि का डेटा जोड़ने के लिए किया जाना चाहिए या सोने के लिए:
suspend fun writeExerciseSession(healthConnectClient: HealthConnectClient) {
healthConnectClient.insertRecords(
listOf(
ExerciseSessionRecord(
startTime = Instant.parse("2022-05-10T10:00:00.000Z"),
startZoneOffset = ZoneOffset.of("-08:00"),
endTime = Instant.parse("2022-05-10T11:00:00.000Z"),
endZoneOffset = ZoneOffset.of("-08:00"),
exerciseType = ExerciseSessionRecord.ExerciseType.WALKING,
title = "My Walk"
),
StepsRecord(
startTime = Instant.parse("2022-05-10T10:00:00.000Z"),
startZoneOffset = ZoneOffset.of("-08:00"),
endTime = Instant.parse("2022-05-10T10:30:00.000Z"),
endZoneOffset = ZoneOffset.of("-08:00"),
count = 2800
),
StepsRecord(
startTime = Instant.parse("2022-05-10T10:30:00.000Z"),
startZoneOffset = ZoneOffset.of("-08:00"),
endTime = Instant.parse("2022-05-10T11:00:00.000Z"),
endZoneOffset = ZoneOffset.of("-08:00"),
count = 3200
),
)
)
}
- सेशन का इस्तेमाल सामान्य मेज़रमेंट के लिए नहीं किया जाना चाहिए, जैसे कि हर दिन के चरण की गिनती करता है.
- सब-टाइप के डेटा में यूआईडी नहीं है, लेकिन संबंधित डेटा में अलग-अलग यूआईडी हैं.
- सब-टाइप के डेटा को क्रम के मुताबिक टाइमस्टैंप वाले सेशन में अलाइन किया जाना चाहिए जो ओवरलैप नहीं होते. हालांकि, खाली जगह की अनुमति है.
- सेशन तब काम आते हैं, जब उपयोगकर्ता चाहता है कि डेटा (और नियमित रूप से रिकॉर्ड करने के बजाय, एक सत्र के हिस्से के रूप में ट्रैक किया जाता है).
नींद के सेशन
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)
}
कसरत के सेशन
कसरत के सेशन में दौड़ने से लेकर बैडमिंटन तक, कुछ भी शामिल हो सकता है.
कसरत के सेशन लिखें
किसी सेशन को शामिल करने वाला इंसर्शन अनुरोध बनाने का तरीका यहां बताया गया है:
suspend fun writeExerciseSession(healthConnectClient: HealthConnectClient) {
healthConnectClient.insertRecords(
listOf(
ExerciseSessionRecord(
startTime = START_TIME,
startZoneOffset = START_ZONE_OFFSET,
endTime = END_TIME,
endZoneOffset = END_ZONE_OFFSET,
exerciseType = ExerciseSessionRecord.ExerciseType.RUNNING,
title = "My Run"
),
DistanceRecord(
startTime = START_TIME,
startZoneOffset = START_ZONE_OFFSET,
endTime = END_TIME,
endZoneOffset = END_ZONE_OFFSET,
distance = 5000.meters
),
// ... other records
)
)
}
ध्यान दें कि पिछले उदाहरण में Distance
के लिए रिकॉर्ड कैसे जोड़ा गया है, जो कि
सत्र की पूरी अवधि में, लेकिन डेटा को किसी अन्य
जानकारी का स्तर.
अगर ऐप्लिकेशन ने दौड़ने के दौरान नियमित रूप से दूरी मापी थी, तो दूसरा तरीका दूरी के कई रिकॉर्ड शामिल होंगे. हर रिकॉर्ड, दूरी की जानकारी देगा कवर किया हुआ होता है.
कोई व्यायाम सत्र पढ़ें
यहां एक उदाहरण में बताया गया है कि कसरत के किसी सेशन को कैसे पढ़ें:
suspend fun readExerciseSessions(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
val response =
healthConnectClient.readRecords(
ReadRecordsRequest(
ExerciseSessionRecord::class,
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
for (exerciseRecord in response.records) {
// Process each exercise record
// Optionally pull in with other data sources of the same time range.
val distanceRecord =
healthConnectClient
.readRecords(
ReadRecordsRequest(
DistanceRecord::class,
timeRangeFilter =
TimeRangeFilter.between(
exerciseRecord.startTime,
exerciseRecord.endTime
)
)
)
.records
}
}
सब-टाइप का डेटा सेव करने की अनुमति दें
सेशन में ऐसा गैर-ज़रूरी सब-टाइप डेटा भी शामिल हो सकता है जो सत्र को शामिल किया है.
उदाहरण के लिए, कसरत के सेशन में ExerciseSegment
, ExerciseLap
शामिल हो सकते हैं
और ExerciseRoute
क्लास:
val segments = listOf(
ExerciseSegment(
startTime = Instant.parse("2022-01-02T10:10:10Z"),
endTime = Instant.parse("2022-01-02T10:10:13Z"),
segmentType = ActivitySegmentType.BENCH_PRESS,
repetitions = 373
)
)
val laps = listOf(
ExerciseLap(
startTime = Instant.parse("2022-01-02T10:10:10Z"),
endTime = Instant.parse("2022-01-02T10:10:13Z"),
length = 0.meters
)
)
ExerciseSessionRecord(
exerciseType = ExerciseSessionRecord.EXERCISE_TYPE_CALISTHENICS,
startTime = Instant.parse("2022-01-02T10:10:10Z"),
endTime = Instant.parse("2022-01-02T10:10:13Z"),
startZoneOffset = ZoneOffset.UTC,
endZoneOffset = ZoneOffset.UTC,
segments = segments,
laps = laps,
route = route
)
व्यायाम सत्र हटाएं
किसी व्यायाम सत्र को हटाने के दो तरीके हैं:
- समयसीमा के हिसाब से.
- यूआईडी की मदद से.
यहां बताया गया है कि समय सीमा के आधार पर, सब-टाइप का डेटा कैसे मिटाया जाता है:
suspend fun deleteExerciseSession(
healthConnectClient: HealthConnectClient,
exerciseRecord: ExerciseSessionRecord,
) {
val timeRangeFilter = TimeRangeFilter.between(sleepRecord.startTime, sleepRecord.endTime)
healthConnectClient.deleteRecords(SleepSessionRecord::class, timeRangeFilter)
// delete the associated distance record
healthConnectClient.deleteRecords(DistanceRecord::class, timeRangeFilter)
}
यूआईडी के हिसाब से, सब-टाइप का डेटा भी मिटाया जा सकता है. हालांकि, ऐसा करने से केवल व्यायाम सत्र, उससे जुड़ा डेटा नहीं:
suspend fun deleteExerciseSession(
healthConnectClient: HealthConnectClient,
exerciseRecord: ExerciseSessionRecord,
) {
healthConnectClient.deleteRecords(
ExerciseSessionRecord::class,
recordIdsList = listOf(exerciseRecord.metadata.id),
clientRecordIdsList = emptyList()
)
}