Membangun aplikasi kebugaran dasar

Panduan ini akan menuntun Anda dalam membangun aplikasi penghitung langkah seluler dasar, yang merupakan dasar 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 dukungan tambahan terkait pembacaan data dan alat yang diperlukan, lihat Menggunakan Pengelola Sensor Android 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 olahraga, Anda harus meminta dan diberi izin yang sesuai.

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

Sensor penghitung langkah, yang diandalkan oleh banyak aplikasi latihan, menggunakan izin ACTIVITY_RECOGNITION. Tambahkan izin berikut ke file 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>

Untuk meminta izin ACTIVITY_RECOGNITION pada 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 ViewModels menawarkan pemahaman yang lebih mendalam tentang alur kerja ini.

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

Dalam aplikasi contoh ini, UI memiliki tiga status dasar:

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

ViewModel mengekspos status ini sebagai Flow Kotlin. Gunakan class tertutup untuk memuat class dan objek yang mewakili 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