Membangun aplikasi kebugaran dasar

Panduan ini akan memandu Anda membangun aplikasi penghitung langkah seluler dasar, yang merupakan fondasi umum untuk banyak aplikasi Kesehatan & Kebugaran.

Alur kerja ini mengintegrasikan API berikut:

  • SensorManager untuk mengambil data langkah dari perangkat seluler.
  • Room untuk penyimpanan data lokal.
  • Health Connect untuk menyimpan dan membagikan data kesehatan dan kebugaran di perangkat.

Untuk mendapatkan dukungan tambahan terkait pembacaan data dan alat yang diperlukan, lihat Menggunakan Android Sensor Manager untuk melacak langkah dari perangkat seluler.

Jika Anda belum menyiapkan lingkungan pengembangan untuk menggunakan Health Connect, ikuti langkah-langkah memulai ini.

Meminta izin di perangkat genggam

Sebelum mendapatkan data latihan fisik, Anda harus meminta dan diberi izin yang sesuai.

Sebagai praktik terbaik, hanya minta izin yang Anda butuhkan, dan pastikan untuk meminta setiap izin dalam konteks, bukan meminta semua izin sekaligus saat pengguna memulai aplikasi.

Sensor penghitung langkah, yang digunakan oleh banyak aplikasi olahraga, menggunakan izin ACTIVITY_RECOGNITION. Tambahkan izin ini di file AndroidManifest.xml Anda:

<?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>

Untuk meminta izin ACTIVITY_RECOGNITION saat runtime, lihat dokumentasi permintaan izin.

Anda juga harus mendeklarasikan FOREGROUND_SERVICE dalam manifes. Karena Anda meminta izin ACTIVITY_RECOGNITION, deklarasikan FOREGROUND_SERVICE_TYPE_HEALTH:

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

Buka Layanan latar depan untuk mempelajari lebih lanjut layanan latar depan dan jenis layanan latar depan.

Mengelola status UI menggunakan ViewModel

Untuk mengelola status UI dengan benar, gunakan ViewModel. Jetpack Compose dan ViewModel menawarkan gambaran yang lebih mendalam tentang alur kerja ini.

Selain itu, gunakan pelapisan UI, yang merupakan bagian penting untuk membangun UI dengan Compose dan memungkinkan Anda mengikuti praktik terbaik arsitektur, seperti Aliran Data Searah. Untuk mempelajari lebih lanjut pelapisan UI, lihat dokumentasi lapisan UI.

Dalam aplikasi contoh ini, UI memiliki tiga status dasar:

  • Memuat: Menampilkan lingkaran yang berputar.
  • Konten: Menampilkan informasi tentang langkah-langkah Anda untuk hari ini.
  • Error: Menampilkan pesan saat terjadi masalah.

ViewModel mengekspos status ini sebagai Flow Kotlin. Gunakan class tertutup untuk berisi class dan objek yang merepresentasikan kemungkinan status:

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 Compose kemudian mengumpulkan Flow ini sebagai State Compose dan menindaklanjutinya:

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