এই নির্দেশিকাটি Health Connect সংস্করণ 1.1.0-alpha12 এর সাথে সামঞ্জস্যপূর্ণ।
এই নির্দেশিকাটি Health Connect-এ ডেটা লেখা বা আপডেট করার প্রক্রিয়া কভার করে।
ডেটা স্ট্রাকচার সেট আপ করুন
ডেটা লেখার আগে, আমাদের প্রথমে রেকর্ডগুলি সেট আপ করতে হবে। 50 টিরও বেশি ডেটা প্রকারের জন্য, প্রতিটির নিজস্ব কাঠামো রয়েছে। উপলভ্য ডেটা টাইপ সম্পর্কে আরো বিস্তারিত জানার জন্য Jetpack রেফারেন্স দেখুন।
মৌলিক রেকর্ড
হেলথ কানেক্টে স্টেপস ডেটা টাইপ একটি ব্যবহারকারীর রিডিংয়ের মধ্যে কতগুলি পদক্ষেপ নিয়েছে তা ক্যাপচার করে। ধাপের সংখ্যা স্বাস্থ্য, ফিটনেস এবং সুস্থতা প্ল্যাটফর্ম জুড়ে একটি সাধারণ পরিমাপকে উপস্থাপন করে।
নিম্নলিখিত উদাহরণ দেখায় কিভাবে ধাপ গণনা ডেটা সেট করতে হয়:
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(15))
val stepsRecord = StepsRecord(
count = 120,
startTime = startTime,
endTime = endTime,
startZoneOffset = ZoneOffset.UTC,
endZoneOffset = ZoneOffset.UTC,
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_WATCH)
)
)
পরিমাপের একক সহ রেকর্ড
Health Connect নির্ভুলতা প্রদানের জন্য তাদের পরিমাপের একক সহ মান সংরক্ষণ করতে পারে। একটি উদাহরণ হল পুষ্টি ডেটা টাইপ যা বিশাল এবং ব্যাপক। এতে মোট কার্বোহাইড্রেট থেকে ভিটামিন পর্যন্ত বিভিন্ন ধরনের ঐচ্ছিক পুষ্টির ক্ষেত্র রয়েছে। প্রতিটি ডেটা পয়েন্ট সেই পুষ্টির প্রতিনিধিত্ব করে যা সম্ভাব্যভাবে খাবার বা খাদ্য আইটেমের অংশ হিসাবে গ্রহণ করা হয়েছিল।
এই ডেটা টাইপে, সমস্ত পুষ্টি উপাদান Mass
এককে উপস্থাপিত হয়, যখন energy
Energy
এককে উপস্থাপন করা হয়।
নীচের উদাহরণটি দেখায় যে কীভাবে একজন ব্যবহারকারী কলা খেয়েছেন তাদের জন্য পুষ্টির ডেটা সেট করবেন:
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(1))
val banana = NutritionRecord(
name = "banana",
energy = 105.0.kilocalories,
dietaryFiber = 3.1.grams,
potassium = 0.422.grams,
totalCarbohydrate = 27.0.grams,
totalFat = 0.4.grams,
saturatedFat = 0.1.grams,
sodium = 0.001.grams,
sugar = 14.0.grams,
vitaminB6 = 0.0005.grams,
vitaminC = 0.0103.grams,
startTime = startTime,
endTime = endTime,
startZoneOffset = ZoneOffset.UTC,
endZoneOffset = ZoneOffset.UTC,
metadata = Metadata.manualEntry(
device = Device(type = Device.TYPE_PHONE)
)
)
সিরিজ ডেটা সহ রেকর্ড
Health Connect সিরিজ ডেটার একটি তালিকা সংরক্ষণ করতে পারে। একটি উদাহরণ হ'ল হার্ট রেট ডেটা টাইপ যা রিডিংয়ের মধ্যে সনাক্ত করা হার্টবিটের নমুনার একটি সিরিজ ক্যাপচার করে।
এই ডেটা টাইপে, প্যারামিটার samples
হার্ট রেট নমুনার একটি তালিকা দ্বারা উপস্থাপিত হয়। প্রতিটি নমুনায় একটি beatsPerMinute
মান এবং একটি time
মান রয়েছে।
নিম্নোক্ত উদাহরণ দেখায় কিভাবে হার্ট রেট সিরিজ ডেটা সেট করতে হয়:
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(5))
val heartRateRecord = HeartRateRecord(
startTime = startTime,
startZoneOffset = ZoneOffset.UTC,
endTime = endTime,
endZoneOffset = ZoneOffset.UTC,
// records 10 arbitrary data, to replace with actual data
samples = List(10) { index ->
HeartRateRecord.Sample(
time = startTime + Duration.ofSeconds(index.toLong()),
beatsPerMinute = 100 + index.toLong(),
)
},
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_WATCH)
))
ব্যবহারকারীর কাছ থেকে অনুমতি অনুরোধ
একটি ক্লায়েন্ট উদাহরণ তৈরি করার পরে, আপনার অ্যাপটিকে ব্যবহারকারীর কাছ থেকে অনুমতির অনুরোধ করতে হবে। ব্যবহারকারীদের যেকোন সময় অনুমতি প্রদান বা অস্বীকার করার অনুমতি দিতে হবে।
এটি করতে, প্রয়োজনীয় ডেটা প্রকারের জন্য অনুমতিগুলির একটি সেট তৈরি করুন৷ নিশ্চিত করুন যে সেটের অনুমতিগুলি প্রথমে আপনার Android ম্যানিফেস্টে ঘোষণা করা হয়েছে।
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(HeartRateRecord::class),
HealthPermission.getWritePermission(HeartRateRecord::class),
HealthPermission.getReadPermission(StepsRecord::class),
HealthPermission.getWritePermission(StepsRecord::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)
}
}
যেহেতু ব্যবহারকারীরা যেকোন সময় অনুমতি মঞ্জুর বা প্রত্যাহার করতে পারে, আপনার অ্যাপটিকে পর্যায়ক্রমে মঞ্জুর করা অনুমতিগুলি পরীক্ষা করতে হবে এবং অনুমতি হারিয়ে গেলে পরিস্থিতিগুলি পরিচালনা করতে হবে।
ডেটা লিখুন
হেলথ কানেক্টের একটি সাধারণ কর্মপ্রবাহ হল ডেটা লেখা। রেকর্ড যোগ করতে, insertRecords
ব্যবহার করুন।
নিম্নলিখিত উদাহরণ দেখায় কিভাবে ডেটা সন্নিবেশ ধাপের সংখ্যা লিখতে হয়:
suspend fun insertSteps(healthConnectClient: HealthConnectClient) {
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(5))
try {
val stepsRecord = StepsRecord(
count = 120,
startTime = startTime,
endTime = endTime,
startZoneOffset = ZoneOffset.UTC,
endZoneOffset = ZoneOffset.UTC,
metadata = Metadata.autoRecorded(
device = Device(type = Device.TYPE_WATCH)
)
)
healthConnectClient.insertRecords(listOf(stepsRecord))
} catch (e: Exception) {
// Run error handling here
}
}
ডেটা আপডেট করুন
আপনার যদি এক বা একাধিক রেকর্ড পরিবর্তন করতে হয়, বিশেষ করে যখন আপনাকে Health Connect থেকে ডেটার সাথে আপনার অ্যাপ ডেটাস্টোর সিঙ্ক করতে হয়, আপনি আপনার ডেটা আপডেট করতে পারেন৷ বিদ্যমান ডেটা আপডেট করার দুটি উপায় রয়েছে যা রেকর্ডগুলি সন্ধান করতে ব্যবহৃত শনাক্তকারীর উপর নির্ভর করে।
মেটাডেটা
এটি প্রথমে Metadata
ক্লাস পরীক্ষা করা মূল্যবান কারণ ডেটা আপডেট করার সময় এটি প্রয়োজনীয়। তৈরি করার সময়, Health Connect-এর প্রতিটি Record
একটি metadata
ক্ষেত্র থাকে। নিম্নলিখিত বৈশিষ্ট্যগুলি সিঙ্ক্রোনাইজেশনের জন্য প্রাসঙ্গিক:
বৈশিষ্ট্য | বর্ণনা |
---|---|
id | হেলথ কানেক্টের প্রতিটি Record একটি অনন্য id মান রয়েছে।একটি নতুন রেকর্ড সন্নিবেশ করার সময় Health Connect স্বয়ংক্রিয়ভাবে এটি পূরণ করে ৷ |
lastModifiedTime | প্রতিটি Record শেষবার রেকর্ডটি পরিবর্তন করা হয়েছে তাও ট্র্যাক রাখে।Health Connect স্বয়ংক্রিয়ভাবে এটি পূরণ করে। |
clientRecordId | আপনার অ্যাপ ডেটাস্টোরে রেফারেন্স হিসাবে পরিবেশন করার জন্য প্রতিটি Record সাথে যুক্ত একটি অনন্য আইডি থাকতে পারে।আপনার অ্যাপ এই মান সরবরাহ করে। |
clientRecordVersion | যেখানে একটি রেকর্ডে clientRecordId আছে, clientRecordVersion ব্যবহার করা যেতে পারে আপনার অ্যাপ ডেটাস্টোরের সংস্করণের সাথে ডেটা সিঙ্কে থাকার জন্য।আপনার অ্যাপ এই মান সরবরাহ করে। |
রেকর্ড আইডির মাধ্যমে আপডেট করুন
ডেটা আপডেট করতে, প্রথমে প্রয়োজনীয় রেকর্ড প্রস্তুত করুন। প্রয়োজনে রেকর্ডে কোনো পরিবর্তন করুন। তারপরে, পরিবর্তন করতে updateRecords
কল করুন।
নিম্নলিখিত উদাহরণ দেখায় কিভাবে ডেটা আপডেট করতে হয়। এই উদ্দেশ্যে, প্রতিটি রেকর্ডের তার জোন অফসেট মানগুলি PST-তে সমন্বয় করা হয়েছে।
suspend fun updateSteps(
healthConnectClient: HealthConnectClient,
prevRecordStartTime: Instant,
prevRecordEndTime: Instant
) {
try {
val request = healthConnectClient.readRecords(
ReadRecordsRequest(
recordType = StepsRecord::class, timeRangeFilter = TimeRangeFilter.between(
prevRecordStartTime, prevRecordEndTime
)
)
)
val newStepsRecords = arrayListOf<StepsRecord>()
for (record in request.records) {
// Adjusted both offset values to reflect changes
val sr = StepsRecord(
count = record.count,
startTime = record.startTime,
startZoneOffset = record.startTime.atZone(ZoneId.of("PST")).offset,
endTime = record.endTime,
endZoneOffset = record.endTime.atZone(ZoneId.of("PST")).offset,
metadata = record.metadata
)
newStepsRecords.add(sr)
}
healthConnectClient.updateRecords(newStepsRecords)
} catch (e: Exception) {
// Run error handling here
}
}
ক্লায়েন্ট রেকর্ড আইডি মাধ্যমে আপসার্ট
আপনি যদি ঐচ্ছিক ক্লায়েন্ট রেকর্ড আইডি এবং ক্লায়েন্ট রেকর্ড সংস্করণ মান ব্যবহার করেন, আমরা updateRecords
এর পরিবর্তে insertRecords
ব্যবহার করার পরামর্শ দিই।
insertRecords
ফাংশন ডেটা আপসার্ট করার ক্ষমতা রাখে। ক্লায়েন্ট রেকর্ড আইডিগুলির প্রদত্ত সেটের উপর ভিত্তি করে স্বাস্থ্য সংযোগে ডেটা বিদ্যমান থাকলে, এটি ওভাররাইট হয়ে যায়। অন্যথায়, এটি নতুন ডেটা হিসাবে লেখা হয়। যখনই আপনার অ্যাপ ডেটাস্টোর থেকে Health Connect-এ ডেটা সিঙ্ক করার প্রয়োজন হয় তখনই এই দৃশ্যটি কার্যকর।
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে অ্যাপ ডেটাস্টোর থেকে টেনে আনা ডেটার উপর একটি আপসার্ট সম্পাদন করতে হয়:
suspend fun pullStepsFromDatastore() : ArrayList<StepsRecord> {
val appStepsRecords = arrayListOf<StepsRecord>()
// Pull data from app datastore
// ...
// Make changes to data if necessary
// ...
// Store data in appStepsRecords
// ...
var sr = StepsRecord(
metadata = Metadata.autoRecorded(
clientRecordId = "Your client record ID",
device = Device(type = Device.TYPE_WATCH)
),
// Assign more parameters for this record
)
appStepsRecords.add(sr)
// ...
return appStepsRecords
}
suspend fun upsertSteps(
healthConnectClient: HealthConnectClient,
newStepsRecords: ArrayList<StepsRecord>
) {
try {
healthConnectClient.insertRecords(newStepsRecords)
} catch (e: Exception) {
// Run error handling here
}
}
এর পরে, আপনি এই ফাংশনগুলিকে আপনার প্রধান থ্রেডে কল করতে পারেন।
upsertSteps(healthConnectClient, pullStepsFromDatastore())
ক্লায়েন্ট রেকর্ড সংস্করণে মান পরীক্ষা করুন
যদি আপনার ডেটা আপসার্ট করার প্রক্রিয়াতে ক্লায়েন্ট রেকর্ড সংস্করণ অন্তর্ভুক্ত থাকে, তাহলে Health Connect clientRecordVersion
মানগুলির তুলনা পরীক্ষা করে। যদি সন্নিবেশিত ডেটা থেকে সংস্করণটি বিদ্যমান ডেটা থেকে সংস্করণের চেয়ে বেশি হয়, তাহলে উল্টোটা ঘটে। অন্যথায়, প্রক্রিয়াটি পরিবর্তন উপেক্ষা করে এবং মান একই থাকে।
আপনার ডেটাতে সংস্করণ অন্তর্ভুক্ত করতে, আপনাকে আপনার সংস্করণের যুক্তির উপর ভিত্তি করে একটি Long
মান সহ Metadata.clientRecordVersion
সরবরাহ করতে হবে।
val endTime = Instant.now()
val startTime = endTime.minus(Duration.ofMinutes(15))
val stepsRecord = StepsRecord(
count = 100L,
startTime = startTime,
startZoneOffset = ZoneOffset.UTC,
endTime = endTime,
endZoneOffset = ZoneOffset.UTC,
metadata = Metadata.manualEntry(
clientRecordId = "Your supplied record ID",
clientRecordVersion = 0L, // Your supplied record version
device = Device(type = Device.TYPE_WATCH)
)
)
যখনই পরিবর্তন হয় তখন আপসার্ট স্বয়ংক্রিয়ভাবে version
বৃদ্ধি করে না, ডেটা ওভাররাইট করার কোনো অপ্রত্যাশিত ঘটনা প্রতিরোধ করে। এর সাথে, আপনাকে ম্যানুয়ালি এটি একটি উচ্চ মূল্যের সাথে সরবরাহ করতে হবে।
ডেটা লেখার জন্য সর্বোত্তম অনুশীলন
অ্যাপ্লিকেশানগুলিকে শুধুমাত্র স্বাস্থ্য সংযোগে নিজস্ব-উৎসিত ডেটা লিখতে হবে৷
যদি আপনার অ্যাপের ডেটা অন্য অ্যাপ থেকে ইম্পোর্ট করা হয়, তাহলে দায়িত্ব অন্য অ্যাপের উপর পড়ে স্বাস্থ্য কানেক্টে নিজের ডেটা লেখার।
এটি যুক্তি প্রয়োগ করাও একটি ভাল ধারণা যা লেখার ব্যতিক্রমগুলি পরিচালনা করে যেমন ডেটা সীমার বাইরে থাকা বা অভ্যন্তরীণ সিস্টেম ত্রুটি। আপনি আপনার ব্যাকঅফ প্রয়োগ করতে পারেন এবং চাকরির সময় নির্ধারণের পদ্ধতিতে কৌশলগুলি পুনরায় চেষ্টা করতে পারেন। Health Connect-এ লেখা শেষ পর্যন্ত ব্যর্থ হলে, নিশ্চিত করুন যে আপনার অ্যাপটি রপ্তানির সেই বিন্দু অতিক্রম করতে পারে। লগ ইন করতে ভুলবেন না এবং নির্ণয়ের জন্য ত্রুটিগুলি রিপোর্ট করুন৷
ডেটা ট্র্যাক করার সময়, আপনার অ্যাপ যেভাবে ডেটা লিখে তার উপর নির্ভর করে আপনি অনুসরণ করতে পারেন এমন কয়েকটি পরামর্শ রয়েছে।
প্যাসিভ ট্র্যাকিং
এর মধ্যে এমন অ্যাপ রয়েছে যা প্যাসিভ ফিটনেস বা স্বাস্থ্য ট্র্যাকিং করে, যেমন ব্যাকগ্রাউন্ডে ক্রমাগত স্টেপ বা হার্ট রেট রেকর্ড করা।
আপনার অ্যাপকে পর্যায়ক্রমে স্বাস্থ্য সংযোগে নিম্নলিখিত উপায়ে ডেটা লিখতে হবে:
- প্রতিটি সিঙ্কে, শুধুমাত্র নতুন ডেটা এবং আপডেট করা ডেটা লিখুন যা শেষ সিঙ্কের পর থেকে পরিবর্তিত হয়েছে৷
- খণ্ড অনুরোধ প্রতি লেখার অনুরোধে সর্বাধিক 1000টি রেকর্ডের জন্য।
- কমপক্ষে 15 মিনিটের সময়কাল সহ পর্যায়ক্রমিক ব্যাকগ্রাউন্ড কাজগুলি নির্ধারণ করতে
WorkManager
ব্যবহার করুন। ডিভাইসটি নিষ্ক্রিয় থাকলে এবং ব্যাটারি কম না থাকলে শুধুমাত্র কাজগুলি চালানোর জন্য সীমাবদ্ধ করুন৷
val constraints = Constraints.Builder() .requiresBatteryNotLow() .requiresDeviceIdle(true) .build() val writeDataWork = PeriodicWorkRequestBuilder<WriteDataToHealthConnectWorker>( 15, TimeUnit.MINUTES, 5, TimeUnit.MINUTES ) .setConstraints(constraints) .build()
সক্রিয় ট্র্যাকিং
এর মধ্যে এমন অ্যাপ রয়েছে যা ইভেন্ট-ভিত্তিক ট্র্যাকিং যেমন ব্যায়াম এবং ঘুম, অথবা ম্যানুয়াল ব্যবহারকারীর ইনপুট যেমন পুষ্টি। এই রেকর্ডগুলি তৈরি করা হয় যখন অ্যাপটি ফোরগ্রাউন্ডে থাকে বা বিরল ইভেন্টে যেখানে এটি দিনে কয়েকবার ব্যবহার করা হয়।
নিশ্চিত করুন যে আপনার অ্যাপটি ইভেন্টের পুরো সময়কালের জন্য Health Connect চালু রাখে না।
হেলথ কানেক্টে ডেটা দুটির একটিতে লিখতে হবে:
- ইভেন্ট সম্পূর্ণ হওয়ার পরে স্বাস্থ্য সংযোগে ডেটা সিঙ্ক করুন। উদাহরণস্বরূপ, যখন ব্যবহারকারী একটি ট্র্যাক করা ব্যায়াম সেশন শেষ করে তখন ডেটা সিঙ্ক করুন।
- পরে ডেটা সিঙ্ক করতে
WorkManager
ব্যবহার করে একটি ওয়ান-অফ টাস্ক শিডিউল করুন।
গ্রানুলারিটি এবং লেখার ফ্রিকোয়েন্সির জন্য সর্বোত্তম অনুশীলন
Health Connect-এ ডেটা লেখার সময় উপযুক্ত রেজোলিউশন ব্যবহার করুন। উপযুক্ত রেজোলিউশন ব্যবহার করা স্টোরেজ লোড কমাতে সাহায্য করে, যদিও এখনও সামঞ্জস্যপূর্ণ এবং সঠিক ডেটা বজায় রাখে। ডেটা রেজোলিউশনে 2টি জিনিস রয়েছে:
- লেখার ফ্রিকোয়েন্সি : কত ঘন ঘন আপনার অ্যাপ্লিকেশন স্বাস্থ্য সংযোগে কোনো নতুন ডেটা পুশ করে। উদাহরণস্বরূপ, প্রতি 15 মিনিটে নতুন ডেটা লিখুন।
- লিখিত ডেটার গ্রানুলারিটি : কতবার যে ডেটা পুশ করা হয়েছে তা নমুনা করা হয়েছে। উদাহরণস্বরূপ, প্রতি 5 সেকেন্ডে হৃদস্পন্দনের নমুনা লিখুন। প্রতিটি ডেটা টাইপের জন্য একই নমুনা হারের প্রয়োজন হয় না। প্রতি সেকেন্ডে ধাপ গণনার ডেটা আপডেট করার সামান্য সুবিধা আছে, প্রতি 60 সেকেন্ডের মতো কম ঘন ঘন ক্যাডেন্সের বিপরীতে। যাইহোক, উচ্চ নমুনা হার ব্যবহারকারীদের তাদের স্বাস্থ্য এবং ফিটনেস ডেটার উপর আরও বিস্তারিত এবং দানাদার চেহারা দিতে পারে। নমুনা হার ফ্রিকোয়েন্সি বিস্তারিত এবং কর্মক্ষমতা মধ্যে ভারসাম্য আঘাত করা উচিত.
সারা দিন পর্যবেক্ষণ করা ডেটা লিখুন
একটি চলমান ভিত্তিতে সংগৃহীত ডেটার জন্য, ধাপগুলির মতো, আপনার আবেদনটি দিনে অন্তত প্রতি 15 মিনিটে Health Connect-এ লিখতে হবে।
ডেটা টাইপ | ইউনিট | প্রত্যাশিত | উদাহরণ |
ধাপ | পদক্ষেপ | প্রতি ১ মিনিটে | 23:14 - 23:15 - 5 ধাপ 23:16 - 23:17 - 22 ধাপ 23:17 - 23:18 - 8 ধাপ |
স্টেপস ক্যাডেন্স | পদক্ষেপ/মিনিট | প্রতি ১ মিনিটে | 23:14 - 23:15 - 5 spm 23:16 - 23:17 - 22 spm 23:17 - 23:18 - 8 spm |
হুইলচেয়ার ঠেলে দেয় | ধাক্কা | প্রতি ১ মিনিটে | 23:14 - 23:15 - 5 ধাক্কা 23:16 - 23:17 - 22 ধাক্কা 23:17 - 23:18 - 8 ধাক্কা |
সক্রিয় ক্যালোরি পোড়া | ক্যালোরি | প্রতি 15 মিনিটে | 23:15 - 23:30 - 2 ক্যালোরি 23:30 - 23:45 - 25 ক্যালোরি 23:45 - 00:00 - 5 ক্যালোরি |
মোট ক্যালোরি পোড়া | ক্যালোরি | প্রতি 15 মিনিটে | 23:15 - 23:30 - 16 ক্যালোরি 23:30 - 23:45 - 16 ক্যালোরি 23:45 - 00:00 - 16 ক্যালোরি |
দূরত্ব | কিমি/মিনিট | প্রতি ১ মিনিটে | 23:14-23:15 - 0.008 কিমি 23:16 - 23:16 - 0.021 কিমি 23:17 - 23:18 - 0.012 কিমি |
উচ্চতা লাভ করেছে | মি | প্রতি ১ মিনিটে | 20:36 - 20:37 - 3.048 মি 20:39 - 20:40 - 3.048 মি 23:23 - 23:24 - 9.144 মি |
ফ্লোরসক্লাইম্বড | মেঝে | প্রতি ১ মিনিটে | 23:14 - 23:15 - 5 তলা 23:16 - 23:16 - 22 তলা 23:17 - 23:18 - 8 তলা |
হার্টরেট | bpm | প্রতি ১ মিনিটে | 6:11am - 55 bpm |
হার্ট রেট ভ্যারিয়েবিলিটিআরএমএসডি | ms | প্রতি ১ মিনিটে | 6:11am - 23 ms |
শ্বাসযন্ত্রের হার | শ্বাস/মিনিট | প্রতি ১ মিনিটে | 23:14 - 23:15 - 60 শ্বাস/মিনিট 23:16 - 23:16 - 62 শ্বাস/মিনিট 23:17 - 23:18 - 64 শ্বাস/মিনিট |
অক্সিজেন স্যাচুরেশন | % | প্রতি 1 ঘন্টা | 6:11 - 95.208% |
সেশন লিখুন
ওয়ার্কআউট বা ঘুমের সেশনের শেষে স্বাস্থ্য সংযোগে ডেটা লিখতে হবে।
একটি সর্বোত্তম অনুশীলন হিসাবে, যে কোনো ঘুমের অধিবেশন বা ব্যায়াম সেশন রেকর্ডিং ডিভাইস এবং উপযুক্ত মেটাডেটা সহ RecordingMethod
সহ লিখতে হবে।
ন্যূনতম, আপনার আবেদন নীচের "প্রত্যাশিত" কলামে নির্দেশিকা অনুসরণ করা উচিত। যেখানে সম্ভব, "সেরা" নির্দেশিকা অনুসরণ করুন।
একটি অনুশীলনের সময় ট্র্যাক করা ডেটা
ডেটা টাইপ | ইউনিট | প্রত্যাশিত | সেরা | উদাহরণ |
ধাপ | পদক্ষেপ | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 5টি ধাপ 23:16 - 23:17 - 22 ধাপ 23:17 - 23:18 - 8 ধাপ |
স্টেপস ক্যাডেন্স | পদক্ষেপ/মিনিট | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 35 spm 23:16 - 23:17 - 37 spm 23:17 - 23:18 - 40 spm |
হুইলচেয়ার ঠেলে দেয় | ধাক্কা | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 5টি ধাক্কা 23:16 - 23:17 - 22 ধাক্কা 23:17 - 23:18 - 8 ধাক্কা |
সাইক্লিং পেডালিং ক্যাডেন্স | আরপিএম | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 65 rpm 23:16 - 23:17 - 70 rpm 23:17 - 23:18 - 68 rpm |
শক্তি | ওয়াট | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 250 ওয়াট 23:16 - 23:17 - 255 ওয়াট 23:17 - 23:18 - 245 ওয়াট |
গতি | কিমি/মিনিট | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 0.3 কিমি/মিনিট 23:16 - 23:17 - 0.4 কিমি/মিনিট 23:17 - 23:18 -0.4 কিমি/মিনিট |
দূরত্ব | কিমি/মি | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 0.008 কিমি 23:16 - 23:16 - 0.021 কিমি 23:17 - 23:18 - 0.012 কিমি |
সক্রিয় ক্যালোরি পোড়া | ক্যালোরি | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 20 ক্যালোরি 23:16 - 23:17 - 20 ক্যালোরি 23:17 - 23:18 - 25 ক্যালোরি |
মোট ক্যালোরি পোড়া | ক্যালোরি | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 36 ক্যালোরি 23:16 - 23:17 - 36 ক্যালোরি 23:17 - 23:18 - 41 ক্যালোরি |
উচ্চতা লাভ করেছে | মি | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 20:36 - 20:37 - 3.048 মি 20:39 - 20:40 - 3.048 মি 23:23 - 23:24 - 9.144 মি |
ব্যায়াম রুট | lat/lng/alt | প্রতি 3-5 সেকেন্ডে | প্রতি 1 সেকেন্ডে | |
হার্টরেট | bpm | প্রতি ১ মিনিটে | প্রতি 1 সেকেন্ডে | 23:14-23:15 - 150 bpm 23:16 - 23:17 -152 bpm 23:17 - 23:18 - 155 bpm |
ঘুমের সময় ট্র্যাক করা ডেটা
ডেটা টাইপ | ইউনিট | প্রত্যাশিত নমুনা | উদাহরণ |
স্লিপ স্টেজিং | মঞ্চ | প্রতি ঘুমের পর্যায়ে দানাদার সময়কাল | 23:46 - 23:50 - জাগ্রত 23:50 - 23:56 - হালকা ঘুম 23:56 - 00:16 - গভীর ঘুম |
রেস্টিং হার্টরেট | bpm | একক দৈনিক মান (সকালে প্রথম জিনিস প্রত্যাশিত) | 6:11am - 60 bpm |
অক্সিজেন স্যাচুরেশন | % | একক দৈনিক মান (সকালে প্রথম জিনিস প্রত্যাশিত) | 6:11 - 95.208% |