একটি মৌলিক ফিটনেস অ্যাপ তৈরি করুন

এই নির্দেশিকা আপনাকে একটি মৌলিক মোবাইল স্টেপ কাউন্টার অ্যাপ তৈরির মাধ্যমে নিয়ে যায়, যা অনেক স্বাস্থ্য ও ফিটনেস অ্যাপের জন্য একটি সাধারণ ভিত্তি।

এই ওয়ার্কফ্লো নিম্নলিখিত APIগুলিকে সংহত করে:

ডেটা রিডিং এবং প্রয়োজনীয় সরঞ্জামগুলিতে অতিরিক্ত সহায়তার জন্য, একটি মোবাইল ডিভাইস থেকে পদক্ষেপগুলি ট্র্যাক করতে Android সেন্সর ম্যানেজার ব্যবহার করুন দেখুন৷

আপনি যদি ইতিমধ্যেই Health Connect ব্যবহার করার জন্য আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ না করে থাকেন, তাহলে এই শুরু করার ধাপগুলি অনুসরণ করুন।

হ্যান্ডহেল্ড ডিভাইসে অনুমতির অনুরোধ করুন

ব্যায়ামের ডেটা পাওয়ার আগে আপনাকে অবশ্যই অনুরোধ করতে হবে এবং উপযুক্ত অনুমতি দিতে হবে।

একটি সর্বোত্তম অভ্যাস হিসাবে, শুধুমাত্র আপনার প্রয়োজনীয় অনুমতিগুলির জন্য অনুরোধ করুন, এবং ব্যবহারকারী যখন অ্যাপটি শুরু করেন তখন একবারে সমস্ত অনুমতির অনুরোধ না করে, প্রেক্ষাপটে প্রতিটি অনুমতির অনুরোধ নিশ্চিত করুন৷

স্টেপ কাউন্টার সেন্সর , যার উপর অনেক ব্যায়াম অ্যাপ নির্ভর করে, ACTIVITY_RECOGNITION অনুমতি ব্যবহার করে। আপনার AndroidManifest.xml ফাইলে এই অনুমতি যোগ করুন:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools">

  <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

</manifest>

রানটাইমে ACTIVITY_RECOGNITION অনুমতির অনুরোধ করতে অনুমতি অনুরোধ ডকুমেন্টেশন পড়ুন।

এছাড়াও আপনাকে ম্যানিফেস্টে একটি FOREGROUND_SERVICE ঘোষণা করতে হবে৷ যেহেতু আপনি ACTIVITY_RECOGNITION অনুমতির জন্য অনুরোধ করছেন, FOREGROUND_SERVICE_TYPE_HEALTH ঘোষণা করুন :

<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_HEALTH"/>

ফোরগ্রাউন্ড পরিষেবাগুলি এবং ফোরগ্রাউন্ড পরিষেবার প্রকারগুলি সম্পর্কে আরও জানতে ফোরগ্রাউন্ড পরিষেবাগুলিতে যান৷

একটি ViewModel ব্যবহার করে UI অবস্থা পরিচালনা করুন

UI অবস্থা সঠিকভাবে পরিচালনা করতে, একটি ViewModel ব্যবহার করুন। জেটপ্যাক কম্পোজ এবং ভিউমডেলস আপনাকে এই ওয়ার্কফ্লোটি আরও গভীরভাবে দেখতে দেয়।

এছাড়াও, UI লেয়ারিং ব্যবহার করুন, যা রচনার সাথে UI তৈরির জন্য একটি গুরুত্বপূর্ণ অংশ এবং আপনাকে স্থাপত্যের সেরা অনুশীলনগুলি অনুসরণ করতে দেয়, যেমন ইউনিডাইরেকশনাল ডেটা ফ্লো । UI লেয়ারিং সম্পর্কে আরও জানতে, UI লেয়ার ডকুমেন্টেশন পড়ুন।

এই উদাহরণ অ্যাপে, UI এর তিনটি মৌলিক অবস্থা রয়েছে:

  • লোড হচ্ছে: একটি ঘূর্ণন বৃত্ত দেখায়।
  • বিষয়বস্তু: আজকের জন্য আপনার পদক্ষেপ সম্পর্কে তথ্য দেখায়।
  • ত্রুটি: কিছু ভুল হলে একটি বার্তা দেখায়।

ViewModel এই রাজ্যগুলিকে কোটলিন Flow হিসাবে প্রকাশ করে। সম্ভাব্য অবস্থার প্রতিনিধিত্ব করে এমন ক্লাস এবং অবজেক্ট ধারণ করতে একটি সিল করা ক্লাস ব্যবহার করুন:

class TodayScreenViewModel(...) {

  val currentScreenState: MutableStateFlow<TodayScreenState> = MutableStateFlow(Loading)

  [...]

}

sealed class TodayScreenState {
    data object Loading : TodayScreenState()
    data class Content(val steps: Long, val dailyGoal: Long) : TodayScreenState()
    data object Error: TodayScreenState()
}

কম্পোজ UI তারপর এই Flow কম্পোজ State হিসেবে সংগ্রহ করে এবং এতে কাজ করে:

val state: TodayScreenState = todayScreenViewModel.currentScreenState.collectAsState().value