আপনি যদি ব্যবহারকারীর ভাইটালস পরিচালনা করে এমন একটি অ্যাপ তৈরি করতে চান, তাহলে হেলথ কানেক্ট ব্যবহার করে আপনি নিম্নলিখিত কাজগুলো করতে পারেন:
- অন্যান্য অ্যাপ থেকে রক্তচাপ, হৃদস্পন্দন এবং শরীরের তাপমাত্রার মতো গুরুত্বপূর্ণ তথ্য পড়ুন।
- আপনার অ্যাপ বা সংযুক্ত ডিভাইস দ্বারা রেকর্ড করা গুরুত্বপূর্ণ তথ্য লিখুন
- শারীরিক অবস্থার তথ্যের ভিত্তিতে প্রবণতা পর্যবেক্ষণ করুন এবং স্বাস্থ্য সম্পর্কিত অন্তর্দৃষ্টি প্রদান করুন।
এই নির্দেশিকায় ভাইটালস ডেটা টাইপ নিয়ে কাজ করার পদ্ধতি বর্ণনা করা হয়েছে, যার মধ্যে পারমিশন, রিড ও রাইট ওয়ার্কফ্লো এবং সর্বোত্তম অনুশীলন অন্তর্ভুক্ত রয়েছে।
সারসংক্ষেপ: একটি পূর্ণাঙ্গ ভাইটালস ট্র্যাকার তৈরি করা
এই মূল ধাপগুলো অনুসরণ করে আপনি হেলথ কানেক্ট ব্যবহার করে একটি পূর্ণাঙ্গ ভাইটালস ট্র্যাকিং অভিজ্ঞতা তৈরি করতে পারেন:
- ভাইটালস ডেটা টাইপগুলোর জন্য যথাযথ অনুমতির অনুরোধ করা হচ্ছে।
-
BloodPressureRecord,HeartRateRecordএবং অন্যান্য ভাইটালস রেকর্ডের মতো রেকর্ড ব্যবহার করে ভাইটালস ডেটা লেখা। - প্রদর্শন, বিশ্লেষণ বা সিঙ্ক করার জন্য ভাইটালস ডেটা পড়া হচ্ছে।
- কার্যকরভাবে ডেটা লেখা ও পড়ার জন্য ব্যাচিং ব্যবহার করা।
এই কর্মপ্রবাহটি অন্যান্য হেলথ কানেক্ট অ্যাপের সাথে আন্তঃকার্যক্ষমতা সক্ষম করে এবং ব্যবহারকারী-নিয়ন্ত্রিত ডেটা অ্যাক্সেস যাচাই করে।
শুরু করার আগে
ভাইটালস ফিচারগুলো প্রয়োগ করার আগে:
- যথাযথ নির্ভরতা ব্যবহার করে হেলথ কানেক্ট একীভূত করুন ।
- একটি
HealthConnectClientইনস্ট্যান্স তৈরি করুন । - আপনার অ্যাপটি হেলথ পারমিশনের উপর ভিত্তি করে রানটাইম পারমিশন ফ্লো প্রয়োগ করে কিনা, তা যাচাই করুন।
মূল ধারণা
হেলথ কানেক্ট-এ ভাইটালস ডেটা বিভিন্ন রেকর্ড টাইপের মাধ্যমে উপস্থাপন করা হয়, যার প্রতিটি একটি নির্দিষ্ট শারীরবৃত্তীয় পরিমাপের সাথে সম্পর্কিত। ওয়ার্কআউট সেশনের মতো নয়, ভাইটালস প্রায়শই একটি নির্দিষ্ট সময়ের বা বিরতি-ভিত্তিক ডেটা হিসাবে রেকর্ড করা হয়।
গুরুত্বপূর্ণ ডেটা প্রকার
গুরুত্বপূর্ণ তথ্য স্বতন্ত্র রেকর্ড প্রকার দ্বারা উপস্থাপিত হয়। সাধারণ প্রকারগুলোর মধ্যে রয়েছে:
-
BloodPressureRecord: এটি রক্তচাপের একটি একক রিডিং উপস্থাপন করে, যার মধ্যে সিস্টোলিক ও ডায়াস্টোলিক চাপ এবং শরীরের অবস্থান অন্তর্ভুক্ত থাকে। -
HeartRateRecord: এটি হৃদস্পন্দনের ধারাবাহিক পরিমাপসমূহকে উপস্থাপন করে। -
RestingHeartRateRecord: বিশ্রামকালীন হৃদস্পন্দনের একটি একক পরিমাপকে বোঝায়। -
BodyTemperatureRecord: পরিমাপের স্থান সহ শরীরের তাপমাত্রার একটি একক পাঠ উপস্থাপন করে। -
BloodGlucoseRecord: রক্তে গ্লুকোজের একটিমাত্র রিডিং উপস্থাপন করে, যার মধ্যে খাবার এবং নমুনার উৎসের সাথে এর সম্পর্ক অন্তর্ভুক্ত থাকে। -
OxygenSaturationRecord: রক্তের অক্সিজেন স্যাচুরেশনের একটি একক রিডিং উপস্থাপন করে। -
RespiratoryRateRecord: শ্বাস-প্রশ্বাসের হারের একটি একক পরিমাপকে বোঝায়।
ডেটা টাইপগুলির সম্পূর্ণ তালিকার জন্য, হেলথ কানেক্ট ডেটা টাইপস দেখুন।
উন্নয়ন বিবেচনা
শারীরিক অবস্থার তথ্য সংবেদনশীল হতে পারে, এবং অ্যাপগুলোকে সেন্সরের পরিমাপ বা ব্যবহারকারীর ইনপুটের প্রতিক্রিয়ায় ডেটা লিখতে, অথবা ব্যাকএন্ড থেকে ডেটা সিঙ্ক করতে হতে পারে। শারীরিক অবস্থার তথ্য পরিচালনার জন্য অনুমতি অত্যন্ত গুরুত্বপূর্ণ।
অনুমতি
ভাইটালস ডেটা পড়া বা লেখার আগে আপনার অ্যাপকে অবশ্যই প্রাসঙ্গিক হেলথ কানেক্ট পারমিশনগুলির জন্য অনুরোধ করতে হবে। ভাইটালসের জন্য সাধারণ পারমিশনগুলির মধ্যে রয়েছে রক্তচাপ, হৃদস্পন্দন, শরীরের তাপমাত্রা, রক্তে গ্লুকোজ, অক্সিজেন স্যাচুরেশন এবং শ্বাস-প্রশ্বাসের হার। এর মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত:
- রক্তচাপ:
BloodPressureRecordএর জন্য পঠন ও লিখন অনুমতি। - হৃদস্পন্দন:
HeartRateRecordএর জন্য পঠন ও লিখন অনুমতি। - বিশ্রামকালীন হৃদস্পন্দন:
RestingHeartRateRecordএর জন্য পঠন ও লিখন অনুমতি। - শরীরের তাপমাত্রা:
BodyTemperatureRecordএর জন্য পঠন ও লিখন অনুমতি। - ব্লাড গ্লুকোজ:
BloodGlucoseRecordএর জন্য পঠন ও লিখন অনুমতি। - অক্সিজেন স্যাচুরেশন:
OxygenSaturationRecordএর জন্য পঠন ও লিখন অনুমতি। - শ্বাস-প্রশ্বাসের হার:
RespiratoryRateRecordএর জন্য পঠন ও লিখন অনুমতি।
রক্তচাপ, হৃদস্পন্দন এবং শরীরের তাপমাত্রার জন্য কীভাবে অনুমতি চাইতে হয়, তার একটি উদাহরণ নিচে দেখানো হলো:
একটি ক্লায়েন্ট ইনস্ট্যান্স তৈরি করার পর, আপনার অ্যাপকে ব্যবহারকারীর কাছ থেকে অনুমতির জন্য অনুরোধ করতে হবে। ব্যবহারকারীদের যেকোনো সময় অনুমতি প্রদান বা প্রত্যাখ্যান করার ক্ষমতা থাকতে হবে।
এটি করার জন্য, প্রয়োজনীয় ডেটা টাইপগুলোর জন্য এক সেট পারমিশন তৈরি করুন। প্রথমে নিশ্চিত করুন যে, সেটের অন্তর্ভুক্ত পারমিশনগুলো আপনার অ্যান্ড্রয়েড ম্যানিফেস্টে ঘোষিত হয়েছে।
// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
HealthPermission.getReadPermission(BloodPressureRecord::class),
HealthPermission.getWritePermission(BloodPressureRecord::class),
HealthPermission.getReadPermission(HeartRateRecord::class),
HealthPermission.getWritePermission(HeartRateRecord::class),
HealthPermission.getReadPermission(BodyTemperatureRecord::class),
HealthPermission.getWritePermission(BodyTemperatureRecord::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)
}
}
যেহেতু ব্যবহারকারীরা যেকোনো সময় অনুমতি দিতে বা প্রত্যাহার করতে পারেন, তাই আপনার অ্যাপকে প্রতিবার ব্যবহারের আগে অনুমতি যাচাই করতে হবে এবং অনুমতি হারিয়ে গেলে তার মোকাবিলা করতে হবে।
অনুমতি অনুরোধ করতে, checkPermissionsAndRun ফাংশনটি কল করুন:
if (!granted.containsAll(PERMISSIONS)) {
requestPermissions.launch(PERMISSIONS)
// Check if required permissions are not granted, and return
}
// Permissions already granted; proceed with inserting or reading data
যদি আপনার শুধুমাত্র একটি ডেটা টাইপের জন্য, যেমন রক্তচাপ, অনুমতির অনুরোধ করার প্রয়োজন হয়, তাহলে আপনার অনুমতি সেটে কেবল সেই ডেটা টাইপটিই অন্তর্ভুক্ত করুন:
রক্তচাপের তথ্য প্রাপ্তি নিম্নলিখিত অনুমতি দ্বারা সুরক্ষিত:
-
android.permission.health.READ_BLOOD_PRESSURE -
android.permission.health.WRITE_BLOOD_PRESSURE
আপনার অ্যাপে রক্তচাপ পরিমাপের সুবিধা যোগ করতে, প্রথমে BloodPressureRecord ডেটা টাইপের জন্য অনুমতির অনুরোধ করুন।
রক্তচাপ লেখার জন্য আপনাকে যে অনুমতিপত্রটি ঘোষণা করতে হবে তা এখানে দেওয়া হলো:
<application>
<uses-permission
android:name="android.permission.health.WRITE_BLOOD_PRESSURE" />
...
</application>
রক্তচাপ পরিমাপ করার জন্য, আপনাকে নিম্নলিখিত অনুমতিগুলো অনুরোধ করতে হবে:
<application>
<uses-permission
android:name="android.permission.health.READ_BLOOD_PRESSURE" />
...
</application>
গুরুত্বপূর্ণ তথ্য লিখুন
এই বিভাগে হেলথ কানেক্ট-এ ভাইটালস ডেটা কীভাবে লিখতে হয় তা বর্ণনা করা হয়েছে। ভাইটালস ডেটা সাধারণত স্বতন্ত্র রেকর্ড হিসেবে লেখা হয়। আপনি যদি একবারে একাধিক রেকর্ড লেখেন, যেমন কোনো সেন্সর বা ব্যাকএন্ড থেকে সিঙ্ক করার সময়, তাহলে ব্যাচিং ব্যবহার করুন।
BloodPressureRecord লেখার উদাহরণ :
suspend fun writeBloodPressureRecord(healthConnectClient: HealthConnectClient) { val record = BloodPressureRecord( time = Instant.now(), zoneOffset = ZoneOffset.UTC, systolic = Pressure.millimetersOfMercury(120.0), diastolic = Pressure.millimetersOfMercury(80.0), bodyPosition = BloodPressureRecord.BODY_POSITION_SITTING_DOWN, measurementLocation = BloodPressureRecord.MEASUREMENT_LOCATION_LEFT_WRIST ) healthConnectClient.insertRecords(listOf(record)) }
ব্যাচ লেখা
আপনার অ্যাপকে যদি একাধিক ডেটা পয়েন্ট লিখতে হয়, যেমন কোনো সংযুক্ত ডিভাইস বা ব্যাকএন্ড সার্ভিস থেকে ডেটা সিঙ্ক করার জন্য, তাহলে কার্যকারিতা বাড়াতে এবং ব্যাটারির ব্যবহার কমাতে আপনার ব্যাচ রাইট করা উচিত। হেলথ কানেক্ট একটিমাত্র রাইট রিকোয়েস্টে ১০০০টি পর্যন্ত রেকর্ড পরিচালনা করতে পারে।
নিম্নলিখিত কোডটি দেখায় কিভাবে একবারে একাধিক রেকর্ড ব্যাচ-রাইট করতে হয়:
suspend fun writeBatchRecords(healthConnectClient: HealthConnectClient) { val bloodPressureRecord = BloodPressureRecord( time = Instant.now(), zoneOffset = ZoneOffset.UTC, systolic = Pressure.millimetersOfMercury(120.0), diastolic = Pressure.millimetersOfMercury(80.0), bodyPosition = BloodPressureRecord.BODY_POSITION_SITTING_DOWN, measurementLocation = BloodPressureRecord.MEASUREMENT_LOCATION_LEFT_WRIST ) val heartRateRecord = HeartRateRecord( startTime = Instant.now().minusSeconds(60), startZoneOffset = ZoneOffset.UTC, endTime = Instant.now(), endZoneOffset = ZoneOffset.UTC, samples = listOf(HeartRateRecord.Sample(time = Instant.now().minusSeconds(30), beatsPerMinute = 80)) ) healthConnectClient.insertRecords(listOf(bloodPressureRecord, heartRateRecord)) }
গুরুত্বপূর্ণ তথ্য পড়া
অ্যাপগুলো পরিমাপ প্রদর্শন করতে, প্রবণতা বিশ্লেষণ করতে, বা কোনো বাহ্যিক সার্ভারের সাথে ডেটা সিঙ্ক করতে ভাইটালস ডেটা পড়তে পারে। ভাইটালস পড়ার জন্য, নির্দিষ্ট রেকর্ড টাইপসহ একটি ReadRecordsRequest ব্যবহার করুন এবং একটি সময়সীমা দিয়ে ফিল্টার করুন।
BloodPressureRecord ডেটা পড়ার উদাহরণ:
suspend fun readBloodPressureRecords( healthConnectClient: HealthConnectClient, startTime: Instant, endTime: Instant ) { val response = healthConnectClient.readRecords( ReadRecordsRequest( recordType = BloodPressureRecord::class, timeRangeFilter = TimeRangeFilter.between(startTime, endTime) ) ) for (record in response.records) { // Process each blood pressure record val systolic = record.systolic val diastolic = record.diastolic } }
যদি আপনার কোনো ব্যাকএন্ড সার্ভারের সাথে ভাইটালস ডেটা সিঙ্ক করার প্রয়োজন হয়, অথবা হেলথ কানেক্ট ব্যবহার করে আপনার অ্যাপের ডেটাস্টোর আপ-টু-ডেট রাখতে চান, তাহলে চেঞ্জলগস (ChangeLogs) ব্যবহার করুন। এর মাধ্যমে আপনি একটি নির্দিষ্ট সময় থেকে যোগ করা, আপডেট করা বা মুছে ফেলা রেকর্ডগুলোর একটি তালিকা পেতে পারেন, যা ম্যানুয়ালি পরিবর্তনগুলো ট্র্যাক করা বা বারবার সমস্ত ডেটা পড়ার চেয়ে বেশি কার্যকর। আরও তথ্যের জন্য, ‘হেলথ কানেক্ট-এর সাথে ডেটা সিঙ্ক করুন’ (Sync data with Health Connect ) দেখুন।
সর্বোত্তম অনুশীলন
ডেটার নির্ভরযোগ্যতা ও ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে এই নির্দেশিকাগুলো অনুসরণ করুন:
- ব্যাচ রাইট রিকোয়েস্ট : ইনপুট/আউটপুট ওভারহেড কমাতে এবং ব্যাটারির আয়ু বাঁচাতে, প্রতিটি ডেটা পয়েন্ট আলাদাভাবে লেখার পরিবর্তে, একটিমাত্র
insertRecordsকলের মাধ্যমে ১০০০টি পর্যন্ত রেকর্ডের ব্যাচে সেগুলোকে গ্রুপ করুন। - লাইভ ট্র্যাকিং চলাকালীন ঘন ঘন ডেটা লিখুন : সেন্সর (যেমন কন্টিনিউয়াস গ্লুকোজ মনিটর বা হার্ট রেট মনিটর) থেকে ঘন ঘন আপডেট পেতে, রিয়েল-টাইম আপডেট এবং ব্যাটারির কার্যকারিতার মধ্যে ভারসাম্য বজায় রাখার জন্য ১৫ মিনিট পর্যন্ত বিরতিতে ডেটা ব্যাচ আকারে লিখুন।
- ব্যাকগ্রাউন্ড সিঙ্কের জন্য WorkManager ব্যবহার করুন । ডিফার্ড রাইটের জন্য, যেমন কোনো কম্প্যানিয়ন ডিভাইস বা ব্যাকএন্ড সার্ভিস থেকে ডেটা সিঙ্ক করার জন্য,
WorkManagerব্যবহার করুন। ব্যাচ রাইটের জন্য ১৫ মিনিটের ব্যবধান রাখার লক্ষ্য রাখুন। - ডুপ্লিকেট ডেটা লেখা এড়িয়ে চলুন: ক্লায়েন্ট আইডি ব্যবহার করুন : রেকর্ড তৈরি করার সময়, একটি
metadata.clientRecordIdসেট করুন। হেলথ কানেক্ট অনন্য রেকর্ড শনাক্ত করতে এটি ব্যবহার করে। আপনি যদি এমন একটিclientRecordIdদিয়ে রেকর্ড লেখার চেষ্টা করেন যা ইতিমধ্যেই বিদ্যমান, তাহলে হেলথ কানেক্ট ডুপ্লিকেটটি উপেক্ষা করবে অথবা নতুন রেকর্ড তৈরি না করে বিদ্যমান রেকর্ডটি আপডেট করবে। সিঙ্ক পুনরায় চেষ্টা করার সময় বা অ্যাপ পুনরায় ইনস্টল করার সময় ডুপ্লিকেট প্রতিরোধ করার সবচেয়ে কার্যকর উপায় হলোmetadata.clientRecordIdসেট করা।val record = StepsRecord( count = 100, startTime = startTime, endTime = endTime, startZoneOffset = ZoneOffset.UTC, endZoneOffset = ZoneOffset.UTC, metadata = Metadata( // Use a unique ID from your own database clientRecordId = "daily_steps_2023_10_27_user_123" ) )
- বিদ্যমান ডেটা যাচাই করুন : ডেটা সিঙ্ক করার আগে, ডুপ্লিকেট ডেটা বা নতুন ডেটার উপর নতুন ডেটা ওভাররাইট হওয়া এড়াতে, সিঙ্কের সময়সীমার মধ্যে থাকা রেকর্ডগুলির জন্য হেলথ কানেক্ট-এ কোয়েরি করে দেখুন আপনার অ্যাপের ডেটা আগে থেকেই বিদ্যমান আছে কিনা।
- অনুমতির জন্য সুস্পষ্ট কারণ দর্শান : আপনার অ্যাপের কেন স্বাস্থ্য ডেটাতে অ্যাক্সেস প্রয়োজন, তা ব্যাখ্যা করতে
Permission.createIntentফ্লো ব্যবহার করুন, উদাহরণস্বরূপ: 'আপনার রক্তচাপের প্রবণতা পর্যবেক্ষণ করতে এবং অন্তর্দৃষ্টি প্রদান করতে।' - পরিমাপের সাথে টাইমস্ট্যাম্প মেলান : রেকর্ডের টাইমস্ট্যাম্পগুলো পরিমাপ নেওয়ার সময়কে সঠিকভাবে প্রতিফলিত করছে কিনা তা যাচাই করুন।
HeartRateRecordমতো ইন্টারভাল ডেটার ক্ষেত্রে,startTimeএবংendTimeসঠিক কিনা তা যাচাই করুন।
পরীক্ষা
ডেটার সঠিকতা এবং উন্নত মানের ব্যবহারকারীর অভিজ্ঞতা যাচাই করার জন্য, এই টেস্টিং কৌশলগুলো অনুসরণ করুন এবং অফিসিয়াল ‘টেস্ট টপ ইউজ কেসেস’ ডকুমেন্টেশনটি দেখুন।
যাচাইকরণ সরঞ্জাম
- হেলথ কানেক্ট টুলবক্স : এই সহায়ক অ্যাপটি ব্যবহার করে আপনি ম্যানুয়ালি রেকর্ড পরীক্ষা করতে, টেস্ট ডেটা মুছে ফেলতে এবং ডাটাবেসে পরিবর্তন অনুকরণ করতে পারেন। আপনার রেকর্ডগুলো সঠিকভাবে সংরক্ষিত হচ্ছে কিনা, তা যাচাই করার এটিই সর্বোত্তম উপায়।
-
FakeHealthConnectClientদিয়ে ইউনিট টেস্টিং : কোনো ফিজিক্যাল ডিভাইসের প্রয়োজন ছাড়াই, আপনার অ্যাপ কীভাবে পারমিশন প্রত্যাহার বা এপিআই এক্সেপশনের মতো এজ কেসগুলো সামাল দেয়, তা যাচাই করতে এই টেস্টিং লাইব্রেরিটি ব্যবহার করুন।
গুণমান চেকলিস্ট
সাধারণ স্থাপত্য
ভাইটালস ইমপ্লিমেন্টেশনে সাধারণত অন্তর্ভুক্ত থাকে:
| উপাদান | পরিচালনা করে |
|---|---|
| ভাইটালস কন্ট্রোলার | সেন্সর/ইনপুট রিডিং ব্যাচিং লজিক |
| রিপোজিটরি লেয়ার (হেলথ কানেক্ট অপারেশনগুলোকে আবৃত করে:) | গুরুত্বপূর্ণ শারীরিক রেকর্ড সন্নিবেশ করুন গুরুত্বপূর্ণ শারীরিক রেকর্ড পড়ুন |
| UI স্তর (প্রদর্শন): | সরাসরি পাঠ ঐতিহাসিক তথ্য চার্ট এবং প্রবণতা |
সমস্যা সমাধান
| লক্ষণ | সম্ভাব্য কারণ | সমাধান |
|---|---|---|
| অনুপস্থিত ডেটা টাইপ (উদাহরণস্বরূপ, রক্তচাপ) | লেখার অনুমতি নেই অথবা সময় ফিল্টার ভুল। | যাচাই করুন যে আপনি নির্দিষ্ট ডেটা টাইপের জন্য অনুমতি চেয়েছেন এবং ব্যবহারকারী তা মঞ্জুর করেছেন। যাচাই করুন যে আপনার ReadRecordsRequest এমন একটি TimeRangeFilter ব্যবহৃত হয়েছে যা পরিমাপের সময়কালকে অন্তর্ভুক্ত করে। অনুমতিসমূহ দেখুন। |
| সদৃশ রেকর্ড দেখা যায় | clientRecordId অনুপস্থিত। | প্রতিটি রেকর্ডের Metadata একটি অনন্য clientRecordId নির্ধারণ করুন। এর ফলে, সিঙ্ক পুনরায় চেষ্টার সময় একই ডেটা দুইবার লেখা হলে Health Connect ডুপ্লিকেট ডেটা বাদ দিতে পারে। সর্বোত্তম অনুশীলন দেখুন। |
| রেকর্ড লিখতে ব্যর্থ হয় | ভুল একক অথবা মান বৈধ সীমার বাইরে। | হেলথ কানেক্ট রেকর্ডের মান যাচাই করে। উদাহরণস্বরূপ, রক্তচাপের মান অবশ্যই শারীরবৃত্তীয়ভাবে সম্ভাব্য সীমার মধ্যে থাকতে হবে। বৈধ সীমা এবং এককের জন্য ডেটা টাইপ ডকুমেন্টেশন দেখুন। |
সাধারণ ডিবাগিং পদক্ষেপ
| অনুমতির অবস্থা যাচাই করুন। | রিড বা রাইট অপারেশন করার আগে সর্বদা getPermissionStatus() কল করুন। ব্যবহারকারীরা যেকোনো সময় সিস্টেম সেটিংস থেকে অনুমতি প্রত্যাহার করতে পারেন। |