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