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

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

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

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

डेटा को पढ़ने और ज़रूरी टूल के बारे में ज़्यादा मदद पाने के लिए, इस्तेमाल करें मोबाइल डिवाइस से कदमों को ट्रैक करने के लिए, 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 की मदद से यूज़र इंटरफ़ेस (यूआई) की स्थिति मैनेज करना

यूज़र इंटरफ़ेस (यूआई) स्थिति को सही तरीके से मैनेज करने के लिए, 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 को लिखें State के तौर पर इकट्ठा करके इस पर काम करता है:

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