Membangun aplikasi kebugaran dasar

Panduan ini memandu Anda dalam membangun aplikasi penghitung langkah seluler dasar, yang adalah landasan umum bagi banyak Aplikasi 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 Health Connect, ikuti langkah-langkah berikut memulai langkah.

Meminta izin di perangkat genggam

Sebelum mendapatkan data olahraga, Anda harus meminta dan diberi izin yang sesuai izin akses.

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

Sensor penghitung langkah, yang diandalkan oleh banyak aplikasi latihan, menggunakan ACTIVITY_RECOGNITION. Tambahkan izin ini di AndroidManifest.xml file:

<?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 ViewModels menawarkan pemahaman yang lebih mendalam tentang hal ini alur kerja.

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 tentang 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 Anda untuk hari ini.
  • Error: Menampilkan pesan jika terjadi masalah.

ViewModel mengekspos status ini sebagai Flow Kotlin. Gunakan class tertutup untuk berisi 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