إنشاء تطبيق أساسي للياقة البدنية

يرشدك هذا الدليل خلال عملية إنشاء تطبيق أساسي لعدّاد خطوات الهاتف المحمول، والذي هي أساس مشترك للعديد من تطبيقات الصحة تطبيقات اللياقة البدنية.

يعمل سير العمل هذا على دمج واجهات برمجة التطبيقات التالية:

  • 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 هذه الحالات على أنّها Flow بلغة Kotlin. استخدِم صفًا مغلقًا من أجل تحتوي على الفئات والكائنات التي تمثل الحالات المحتملة:

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 في Compose وتعمل عليها:

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