Temel bir fitness uygulaması geliştirme

Bu kılavuz, birçok sağlık ve fitness uygulamasının temelini oluşturan basit bir mobil adım sayacı uygulaması oluşturma sürecinde size yol gösterir.

Bu iş akışı aşağıdaki API'leri entegre eder:

  • Mobil cihazdan adım verilerini almak için SensorManager.
  • Yerel veri depolama alanı için oda.
  • Cihazdaki sağlık ve fitness verilerini depolamak ve paylaşmak için Health Connect.

Veri okuma ve gerekli araçlar hakkında ek destek için Android Sensor Manager'ı kullanarak mobil cihazdaki adımları izleme başlıklı makaleyi inceleyin.

Geliştirme ortamınızı Health Connect'i kullanacak şekilde ayarlamadıysanız başlangıç adımlarını uygulayın.

Elde taşınabilir cihazda izin isteme

Egzersiz verilerini almadan önce uygun izinleri istemeniz ve bu izinlerin size verilmesi gerekir.

En iyi uygulama olarak yalnızca ihtiyacınız olan izinleri isteyin ve kullanıcı uygulamayı başlattığında tüm izinleri tek seferde istemek yerine her izni bağlam içinde istediğinizden emin olun.

Birçok egzersiz uygulamasının kullandığı adım sayacı sensörü, ACTIVITY_RECOGNITION iznini kullanır. AndroidManifest.xml dosyanıza şu izni ekleyin:

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

Çalışma zamanında ACTIVITY_RECOGNITION iznini istemek için izin isteği belgelerine bakın.

Ayrıca, manifestte bir FOREGROUND_SERVICE bildirmeniz gerekir. ACTIVITY_RECOGNITION iznini istediğiniz için FOREGROUND_SERVICE_TYPE_HEALTH beyan edin:

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

Ön plan hizmetleri ve ön plan hizmeti türleri hakkında daha fazla bilgi edinmek için Ön plan hizmetleri sayfasını ziyaret edin.

ViewModel kullanarak kullanıcı arayüzü durumunu yönetme

Kullanıcı arayüzü durumunu düzgün bir şekilde yönetmek için ViewModel kullanın. Jetpack Compose ve ViewModels başlıklı makalede bu iş akışı daha ayrıntılı bir şekilde ele alınmaktadır.

Ayrıca, Compose ile kullanıcı arayüzleri oluşturmanın önemli bir parçası olan ve tek yönlü veri akışı gibi mimariyle ilgili en iyi uygulamaları izlemenize olanak tanıyan kullanıcı arayüzü katmanlamasını kullanın. Kullanıcı arayüzü katmanları hakkında daha fazla bilgi edinmek için kullanıcı arayüzü katmanı belgelerine bakın.

Bu örnek uygulamada kullanıcı arayüzünün üç temel durumu vardır:

  • Yükleniyor: Dönen bir daire gösterilir.
  • İçerik: Bugün attığınız adımlarla ilgili bilgileri gösterir.
  • Hata: Bir sorun oluştuğunda mesaj gösterir.

ViewModel, bu durumları Kotlin Flow olarak kullanıma sunar. Olası durumları temsil eden sınıfları ve nesneleri içermek için kapalı sınıf kullanın:

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()
}

Compose UI, bu Flow öğesini Compose State olarak toplar ve buna göre işlem yapar:

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