এই নির্দেশিকাটি Health Connect সংস্করণ 1.1.0-alpha12 এর সাথে সামঞ্জস্যপূর্ণ।
স্বাস্থ্য সংযোগ পেরিফেরাল শরীরের তাপমাত্রা পরিমাপ করার জন্য একটি ত্বকের তাপমাত্রার ডেটা টাইপ প্রদান করে। এই পরিমাপ ঘুমের গুণমান, প্রজনন স্বাস্থ্য এবং অসুস্থতার সম্ভাব্য সূত্রপাত সনাক্ত করার জন্য একটি বিশেষ উপযোগী সংকেত।
প্রয়োজনীয় অনুমতি
Health Connect-এর যেকোনো ডেটার মতো, ত্বকের তাপমাত্রায় অ্যাক্সেস এক জোড়া অনুমতি দ্বারা সুরক্ষিত: READ_SKIN_TEMPERATURE
এবং WRITE_SKIN_TEMPERATURE
।
ব্যবহারকারীর কাছ থেকে অনুমতি অনুরোধ
একটি ক্লায়েন্ট উদাহরণ তৈরি করার পরে, আপনার অ্যাপটিকে ব্যবহারকারীর কাছ থেকে অনুমতির অনুরোধ করতে হবে। ব্যবহারকারীদের যেকোন সময় অনুমতি প্রদান বা অস্বীকার করার অনুমতি দিতে হবে।
এটি করতে, প্রয়োজনীয় ডেটা প্রকারের জন্য অনুমতিগুলির একটি সেট তৈরি করুন৷ নিশ্চিত করুন যে সেটের অনুমতিগুলি প্রথমে আপনার Android ম্যানিফেস্টে ঘোষণা করা হয়েছে।
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(SkinTemperatureRecord::class),
HealthPermission.getWritePermission(SkinTemperatureRecord::class)
)
আপনার অ্যাপে ইতিমধ্যেই প্রয়োজনীয় অনুমতি দেওয়া আছে কিনা তা দেখতে getGrantedPermissions
ব্যবহার করুন। যদি না হয়, সেই অনুমতিগুলির অনুরোধ করতে createRequestPermissionResultContract
ব্যবহার করুন। এটি স্বাস্থ্য সংযোগের অনুমতি স্ক্রীন প্রদর্শন করে।
// Create the permissions launcher
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()
val requestPermissions = registerForActivityResult(requestPermissionActivityContract) { granted ->
if (granted.containsAll(PERMISSIONS)) {
// Permissions successfully granted
} else {
// Lack of required permissions
}
}
suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
val granted = healthConnectClient.permissionController.getGrantedPermissions()
if (granted.containsAll(PERMISSIONS)) {
// Permissions already granted; proceed with inserting or reading data
} else {
requestPermissions.launch(PERMISSIONS)
}
}
যেহেতু ব্যবহারকারীরা যেকোন সময় অনুমতি মঞ্জুর বা প্রত্যাহার করতে পারে, আপনার অ্যাপটিকে পর্যায়ক্রমে মঞ্জুর করা অনুমতিগুলি পরীক্ষা করতে হবে এবং অনুমতি হারিয়ে গেলে পরিস্থিতিগুলি পরিচালনা করতে হবে।
তথ্য একটি চামড়া তাপমাত্রা রেকর্ড অন্তর্ভুক্ত
ত্বকের তাপমাত্রা পরিমাপ রেকর্ডে সংগঠিত হয়। প্রতিটি রেকর্ড নিম্নলিখিত তথ্য নিয়ে গঠিত:
- বেসলাইন তাপমাত্রা , ডিগ্রী সেলসিয়াস বা ডিগ্রী ফারেনহাইট। এটি একটি ঐচ্ছিক মান যা আপনার অ্যাপের UI-তে ভিজ্যুয়ালাইজেশনের জন্য সবচেয়ে উপযোগী।
- ত্বকের তাপমাত্রায় ডেল্টার একটি তালিকা , প্রতিটি শেষ পরিমাপের পর থেকে ত্বকের তাপমাত্রার পরিবর্তন দেখায়। বেসলাইন তাপমাত্রা প্রদান করা হলে, এই ডেল্টা একই তাপমাত্রা ইউনিট ব্যবহার করা উচিত.
- ব্যবহারকারীর শরীরের অবস্থান যেখানে পরিমাপ করা হয়েছিল: আঙুল, পায়ের আঙ্গুল বা কব্জি।
সমর্থিত সমষ্টি
Health Connect আপনাকে ডেল্টাগুলির একটি প্রদত্ত তালিকার জন্য নিম্নলিখিত সমষ্টিগত মানগুলি পেতে দেয়:
- সর্বনিম্ন মান
- সর্বোচ্চ মান
- গড় মান
ত্বকের তাপমাত্রা পড়ুন
নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে জেটপ্যাক লাইব্রেরি ব্যবহার করে ত্বকের তাপমাত্রা পরিমাপ পড়তে হয়:
suspend fun readSkinTemperatures() {
// Error handling, permission check, and feature availability check
// aren't included.
// Record includes measurements during the past hour.
val recordEndTime = Instant.now()
val recordStartTime = recordEndTime.minusSeconds(60 * 60)
val response = healthConnectClient.readRecords(
ReadRecordsRequest<SkinTemperatureRecord>(
timeRangeFilter = TimeRangeFilter.between(
recordStartTime, recordEndTime
)
)
)
for (skinTemperatureRecord in response.records) {
// Process each skin temperature record here.
}
}
ত্বকের তাপমাত্রা লিখুন
নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে জেটপ্যাক লাইব্রেরি ব্যবহার করে ত্বকের তাপমাত্রা পরিমাপ লিখতে হয়:
suspend fun writeSkinTemperatures(): InsertRecordsResponse {
// Error handling, permission check, and feature availability check
// aren't included.
// Record includes measurements during the past hour.
val recordEndTime: ZonedDateTime = now()
val recordStartTime: ZonedDateTime = recordEndTime.minusHours(1)
healthConnectClient.insertRecords(
// For this example, there's only one skin temperature record.
listOf(
SkinTemperatureRecord(
baseline = Temperature.celsius(37.0),
startTime = recordStartTime.toInstant(),
startZoneOffset = recordStartTime.offset,
endTime = recordEndTime.toInstant(),
endZoneOffset = recordEndTime.offset,
deltas = listOf(
SkinTemperatureRecord.Delta(
recordEndTime.minusMinutes(50).toInstant(), celsius(0.5)
), SkinTemperatureRecord.Delta(
recordEndTime.minusMinutes(30).toInstant(), celsius(-0.7)
)
),
measurementLocation = SkinTemperatureRecord.MEASUREMENT_LOCATION_FINGER,
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_RING)
),
)
)
)
}