फ़िटनेस के लिए एक सामान्य ऐप्लिकेशन बनाना

इस गाइड में, मोबाइल पर चलने वाला एक बुनियादी स्टेप काउंटर ऐप्लिकेशन बनाने का तरीका बताया गया है. यह कई हेल्थ और फ़िटनेस ऐप्लिकेशन के लिए एक सामान्य आधार है.

इस वर्कफ़्लो में, इन एपीआई को इंटिग्रेट किया जाता है:

  • मोबाइल डिवाइस से कदमों का डेटा पाने के लिए, SensorManager का इस्तेमाल किया जाता है.
  • लोकल डेटा स्टोरेज के लिए, Room का इस्तेमाल करें.
  • डिवाइस पर सेहत और फ़िटनेस से जुड़ा डेटा सेव और शेयर करने के लिए, Health Connect का इस्तेमाल किया जाता है.

डेटा पढ़ने और ज़रूरी टूल के बारे में ज़्यादा मदद पाने के लिए, मोबाइल डिवाइस से कदमों को ट्रैक करने के लिए, Android Sensor Manager का इस्तेमाल करना लेख पढ़ें.

अगर आपने 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 का इस्तेमाल करके यूज़र इंटरफ़ेस (यूआई) की स्थिति मैनेज करना

यूज़र इंटरफ़ेस (यूआई) की स्थिति को सही तरीके से मैनेज करने के लिए, ViewModel का इस्तेमाल करें. Jetpack Compose और ViewModels में, आपको इस वर्कफ़्लो के बारे में ज़्यादा जानकारी मिलेगी.

इसके अलावा, यूज़र इंटरफ़ेस (यूआई) लेयरिंग का इस्तेमाल करें. यह Compose की मदद से यूज़र इंटरफ़ेस (यूआई) बनाने का एक अहम हिस्सा है. इससे आपको आर्किटेक्चर के सबसे सही तरीकों का पालन करने में मदद मिलती है. जैसे, एकतरफ़ा डेटा फ़्लो. यूज़र इंटरफ़ेस (यूआई) लेयरिंग के बारे में ज़्यादा जानने के लिए, यूज़र इंटरफ़ेस (यूआई) लेयर का दस्तावेज़ पढ़ें.

इस उदाहरण ऐप्लिकेशन में, यूज़र इंटरफ़ेस (यूआई) की तीन बुनियादी स्थितियां हैं:

  • लोड हो रहा है: इसमें घूमता हुआ सर्कल दिखता है.
  • कॉन्टेंट: इसमें आज के लिए आपके कदमों की जानकारी दिखती है.
  • गड़बड़ी: कोई गड़बड़ी होने पर यह मैसेज दिखता है.

ViewModel इन स्थितियों को Kotlin 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()
}

इसके बाद, Compose यूज़र इंटरफ़ेस (यूआई) इस Flow को Compose State के तौर पर इकट्ठा करता है और इस पर कार्रवाई करता है:

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