ตัวอย่างต่อไปนี้แสดงวิธีอ่านข้อมูลดิบซึ่งเป็นส่วนหนึ่งของเวิร์กโฟลว์ทั่วไป
อ่านข้อมูล
Health Connect อนุญาตให้แอปอ่านข้อมูลจากที่เก็บข้อมูลได้เมื่อแอปอยู่เบื้องหน้าและเบื้องหลัง ดังนี้
การอ่านในเบื้องหน้า: คุณจะอ่านข้อมูลจาก Health Connect ได้ปกติเมื่อแอปอยู่ในเบื้องหน้า ในกรณีเหล่านี้ คุณอาจพิจารณาใช้บริการที่ทำงานอยู่เบื้องหน้าเพื่อเรียกใช้การดำเนินการนี้ในกรณีที่ผู้ใช้หรือระบบวางแอปของคุณไว้ในเบื้องหลังระหว่างการดำเนินการอ่าน
การอ่านในเบื้องหลัง: การขอสิทธิ์เพิ่มเติมจากผู้ใช้จะช่วยให้คุณอ่านข้อมูลได้หลังจากที่ผู้ใช้หรือระบบวางแอปของคุณไว้ในเบื้องหลัง ดูตัวอย่างการอ่านเบื้องหลังฉบับเต็ม
ประเภทข้อมูลจำนวนก้าวใน Health Connect จะบันทึกจำนวนก้าวที่ผู้ใช้เดินระหว่างการอ่านค่า จํานวนก้าวแสดงการวัดผลทั่วไปในแพลตฟอร์มสุขภาพ การออกกำลังกาย และไลฟ์สไตล์ Health Connect ช่วยให้คุณอ่านและเขียนข้อมูลจำนวนก้าวได้อย่างง่ายดาย
หากต้องการอ่านระเบียน ให้สร้าง ReadRecordsRequest
แล้วระบุเมื่อเรียกใช้ readRecords
ตัวอย่างต่อไปนี้แสดงวิธีอ่านข้อมูลจำนวนก้าวของผู้ใช้ภายในระยะเวลาหนึ่ง ดูตัวอย่างเพิ่มเติมที่มี SensorManager
ได้ที่คู่มือข้อมูลจํานวนก้าว
suspend fun readStepsByTimeRange(
healthConnectClient: HealthConnectClient,
startTime: Instant,
endTime: Instant
) {
try {
val response = healthConnectClient.readRecords(
ReadRecordsRequest(
StepsRecord::class,
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
for (stepRecord in response.records) {
// Process each step record
}
} catch (e: Exception) {
// Run error handling here
}
}
ตัวอย่างการอ่านในเบื้องหลัง
หากต้องการอ่านข้อมูลในเบื้องหลัง ให้ประกาศสิทธิ์ต่อไปนี้ในไฟล์ Manifest
<application>
<uses-permission android:name="android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND" />
...
</application>
ตัวอย่างต่อไปนี้แสดงวิธีอ่านข้อมูลจํานวนก้าวในเบื้องหลังสําหรับผู้ใช้ภายในระยะเวลาหนึ่งโดยใช้ WorkManager
class ScheduleWorker(private val appContext: Context, workerParams: WorkerParameters):
CoroutineWorker(appContext, workerParams) {
override suspend fun doWork(): Result {
// Read data and process it.
...
// Return success indicating successful data retrieval
return Result.success()
}
}
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_READ_HEALTH_DATA_IN_BACKGROUND
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Check if necessary permission is granted
val grantedPermissions = healthConnectClient.permissionController.getGrantedPermissions()
if (PERMISSION_READ_HEALTH_DATA_IN_BACKGROUND !in grantedPermissions) {
// Perform read in foreground
...
} else {
// Schedule the periodic work request in background
val periodicWorkRequest = PeriodicWorkRequestBuilder<ScheduleWorker>(1, TimeUnit.HOURS)
.build()
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"read_health_connect",
ExistingPeriodicWorkPolicy.KEEP,
periodicWorkRequest
)
}
} else {
// Background reading is not available, perform read in foreground
...
}
อ่านข้อมูลที่เขียนไว้ก่อนหน้านี้
หากแอปเคยเขียนระเบียนลงใน Health Connect มาก่อน แอปนั้นจะอ่านระเบียนเหล่านั้นได้โดยไม่ต้องมีสิทธิ์อ่านระเบียนเหล่านั้นโดยเฉพาะ กรณีนี้ใช้ได้กับสถานการณ์ที่แอปต้องซิงค์กับ Health Connect อีกครั้งหลังจากที่ผู้ใช้ติดตั้งแอปอีกครั้ง
หากต้องการอ่านข้อมูลในสถานการณ์นี้ คุณต้องระบุชื่อแพ็กเกจเป็นออบเจ็กต์ DataOrigin
ในพารามิเตอร์ dataOriginFilter
ของ ReadRecordsRequest
ตัวอย่างต่อไปนี้แสดงวิธีระบุชื่อแพ็กเกจเมื่ออ่านระเบียนขั้นตอน
try {
val response = healthConnectClient.readRecords(
ReadRecordsRequest(
recordType = StepsRecord::class,
timeRangeFilter = TimeRangeFilter.between(startTime, endTime),
dataOriginFilter = setOf(DataOrigin("com.my.package.name"))
)
)
for (record in response.records) {
// Process each record
}
} catch (e: Exception) {
// Run error handling here
}
ข้อจำกัดในการอ่าน
โดยค่าเริ่มต้น แอปจะอ่านข้อมูลได้สูงสุด 30 วันเมื่อมีการให้สิทธิ์
เมื่อใช้สิทธิ์ PERMISSION_READ_HEALTH_DATA_HISTORY
แอปจะอ่านข้อมูลที่เก่ากว่า 30 วันได้
ข้อจำกัด 30 วัน
แอปพลิเคชันจะอ่านข้อมูลจาก Health Connect ได้สูงสุด 30 วันก่อนวันที่มีการให้สิทธิ์เป็นครั้งแรก
อย่างไรก็ตาม หากผู้ใช้ลบแอปของคุณ ประวัติสิทธิ์จะหายไป หากผู้ใช้ติดตั้งแอปของคุณอีกครั้งและมอบสิทธิ์อีกครั้ง แอปจะอ่านข้อมูลจาก Health Connect ได้สูงสุด 30 วันก่อนวันที่ใหม่ดังกล่าว
ตัวอย่าง 30 วัน
หากผู้ใช้ให้สิทธิ์การอ่านแก่แอปพลิเคชันของคุณเป็นครั้งแรกในวันที่ 30 มีนาคม 2023 ข้อมูลล่าสุดที่แอปจะอ่านย้อนกลับได้จะมาจากวันที่ 28 กุมภาพันธ์ 2023 เป็นต้นไป
จากนั้นผู้ใช้ลบแอปของคุณในวันที่ 10 พฤษภาคม 2023 ผู้ใช้ตัดสินใจที่จะติดตั้งแอปอีกครั้งในวันที่ 15 พฤษภาคม 2023 และมอบสิทธิ์การอ่าน วันที่ที่เร็วที่สุดที่แอปจะอ่านข้อมูลได้คือ15 เมษายน 2023
อ่านข้อมูลที่มีอายุมากกว่า 30 วัน
หากต้องการอ่านข้อมูลที่มีอายุมากกว่า 30 วัน คุณต้องขอสิทธิ์ PERMISSION_READ_HEALTH_DATA_HISTORY
หากไม่มีสิทธิ์นี้ การพยายามอ่านระเบียนเดียวที่เก่ากว่า 30 วันจะทำให้เกิดข้อผิดพลาด
นอกจากนี้ คุณยังอ่านข้อมูลที่เก่ากว่า 30 วันโดยใช้คําขอช่วงเวลาไม่ได้