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