Health Connect'i kullanmaya başlama

Bu rehber, uygulamanızda Health Connect'i kullanmaya nasıl başlayabileceğinizi gösterir.

1. adım: Health Connect uygulamasını hazırlayın

Health Connect uygulaması, aracılığıyla e-posta gönderip almaya başlar. Bu istekler arasında ve bu verilerin okuma/yazma erişimini yönetme.

Health Connect'e erişim, telefonda yüklü Android sürümüne bağlıdır. Aşağıdaki bölümlerde, Android'in son sürümlerinin birkaçının nasıl kullanılacağı açıklanmaktadır.

Android 14

Health Connect, Android 14 (API Düzeyi 34) sürümünden itibaren Android Çerçevesi. Health Connect'in bu sürümü bir çerçeve modülüdür. Entegre hiçbir kurulum gerekmez.

Android 13 ve önceki sürümler

Health Connect, Android 13 (API Düzeyi 33) ve önceki sürümlerde bahsedeceğim. Bunun için uygulamanız gereken Google Play Store'daki Health Connect uygulaması.

Uygulamanızı Android 13 ve önceki sürümlerde Health Connect ile entegre ettiyseniz ve veri taşıma işlemini Android 14'te yapmak istiyorsanız Android 13'ten 14'e geçin

Health Connect uygulamasını açma

Health Connect artık varsayılan olarak ana ekranda görünmez. Sağlık uygulamasını açmak için Bağlanın ve Ayarlar > Uygulamalar > Health Connect'e gidin veya Health Connect'i ekleyin Hızlı Ayarlar menünüze dokunun.

Ayrıca Health Connect, kullanıcının Sağlık uygulamasında depolanan sağlık verileri için bir PIN, desen veya şifre Cihaz kilitliyken bağlantı kötü amaçlı taraflardan korunur. Bir için Ayarlar > Güvenlik > Ekran kilidi.

2. adım: Health Connect SDK'sını uygulamanıza ekleyin

Health Connect SDK, şu işlemler için Health Connect API'yi kullanmaktan sorumludur: Sağlık uygulamasındaki veri deposuna karşı gerçekleştirilen işlemlerde istekler gönderme Uygulamayı bağla.

Modül düzeyindeki build.gradle dosyanıza Health Connect SDK'sı bağımlılığını ekleyin:

dependencies {
  ...
  implementation "androidx.health.connect:connect-client:1.1.0-alpha02"
  ...
}

En son sürüm için Health Connect sürümlerine göz atın.

3. Adım: Uygulamanızı yapılandırın

Aşağıdaki bölümlerde, uygulamanızı Merchant Center'a entegre etmek için Health Connect.

İzinleri bildirme

Sağlık ve fitness verilerine erişim hassastır. Health Connect, kullanıcı güvenini koruyarak okuma ve yazma işlemleri için bir güvenlik katmanı içerir.

AndroidManifest.xml dosyasında şu ölçütlere göre okuma ve yazma izinleri tanımlayacak: seçin. Oluşturduğunuz izin grubunu için erişim isteğinde bulunabilirsiniz.

Health Connect, standart Android izin beyan biçimini kullanır. <uses-permission> etiketleriyle izinler atayın. Bunları <manifest> etiket.

<manifest>
  <uses-permission android:name="android.permission.health.READ_HEART_RATE"/>
  <uses-permission android:name="android.permission.health.WRITE_HEART_RATE"/>
  <uses-permission android:name="android.permission.health.READ_STEPS"/>
  <uses-permission android:name="android.permission.health.WRITE_STEPS"/>

  <application>
  ...
  </application>
</manifest>

İzinlerin tam listesi ve ilgili veri türleri için şuraya bakın: Veri türlerinin listesi.

Uygulamanızın gizlilik politikası iletişim kutusunu gösterin

Android manifest'inizde, uygulamanızın uygulamanızın gerekçesini belirten gizlilik politikası kullanıcı verilerinin nasıl kullanıldığını ve işlendiğini açıklayan bir listedir.

ACTION_SHOW_PERMISSIONS_RATIONALE için bu etkinliği beyan edin Kullanıcı reklam öğesini tıkladığında uygulamaya gönderildiği yere gizlilik politikası bağlantısını tıklayarak erişebilirsiniz.

...
<application>
  ...
  <!-- For supported versions through Android 13, create an activity to show the rationale
       of Health Connect permissions once users click the privacy policy link. -->
  <activity
      android:name=".PermissionsRationaleActivity"
      android:exported="true">
    <intent-filter>
      <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
    </intent-filter>
  </activity>

  <!-- For versions starting Android 14, create an activity alias to show the rationale
       of Health Connect permissions once users click the privacy policy link. -->
  <activity-alias
      android:name="ViewPermissionUsageActivity"
      android:exported="true"
      android:targetActivity=".PermissionsRationaleActivity"
      android:permission="android.permission.START_VIEW_PERMISSION_USAGE">
    <intent-filter>
      <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
      <category android:name="android.intent.category.HEALTH_PERMISSIONS" />
    </intent-filter>
  </activity-alias>
  ...
</application>
...

Health Connect istemcisi alma

HealthConnectClient, Health Connect API'ye bir giriş noktasıdır. Uygulamanın, Health Connect uygulamasındaki veri deposunu kullanmasına olanak tanır. Google temel depolama katmanıyla bağlantısını otomatik olarak yönetir ve tüm IPC'yi ve giden isteklerin ve gelen yanıtların serileştirilmesini sağlar.

İstemci örneği almak için Health Connect paket adını önce Android manifest'ini açın.

<application> ... </application>
...
<!-- Check if Health Connect is installed -->
<queries>
    <package android:name="com.google.android.apps.healthdata" />
</queries>

Ardından Etkinliğinizde Health Connect'in yüklü olup olmadığını kontrol edin getSdkStatus kullanılıyor. Varsa bir HealthConnectClient örneği.

val availabilityStatus = HealthConnectClient.getSdkStatus(context, providerPackageName)
if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE) {
  return // early return as there is no viable integration
}
if (availabilityStatus == HealthConnectClient.SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED) {
  // Optionally redirect to package installer to find a provider, for example:
  val uriString = "market://details?id=$providerPackageName&url=healthconnect%3A%2F%2Fonboarding"
  context.startActivity(
    Intent(Intent.ACTION_VIEW).apply {
      setPackage("com.android.vending")
      data = Uri.parse(uriString)
      putExtra("overlay", true)
      putExtra("callerId", context.packageName)
    }
  )
  return
}
val healthConnectClient = HealthConnectClient.getOrCreate(context)
// Issue operations with healthConnectClient

4. Adım: Kullanıcıdan izin isteyin

Bir istemci örneği oluşturduktan sonra, uygulamanızın belirtir. Kullanıcıların herhangi bir zamanda izin vermesine veya reddetmesine izin verilmelidir.

Bunu yapmak için gerekli veri türlerine yönelik bir izin grubu oluşturun. Şunlardan emin olun: öncelikle, gruptaki izinlerin Android manifest'inizde tanımlandığından emin olun.

// Create a set of permissions for required data types
val PERMISSIONS =
setOf(
  HealthPermission.getReadPermission(HeartRateRecord::class),
  HealthPermission.getWritePermission(HeartRateRecord::class),
  HealthPermission.getReadPermission(StepsRecord::class),
  HealthPermission.getWritePermission(StepsRecord::class)
)

Uygulamanızda zaten mevcut olup olmadığını görmek için getGrantedPermissions gerekli izinler verildi. Değilse şunu kullanın: Şu isteği göndermek için createRequestPermissionResultContract: bu izinleri verebilirsiniz. Health Connect izinler ekranı gösterilir.

// Create the permissions launcher
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()

val requestPermissions = registerForActivityResult(requestPermissionActivityContract) { granted ->
  if (granted.containsAll(PERMISSIONS)) {
    // Permissions successfully granted
  } else {
    // Lack of required permissions
  }
}

suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
  val granted = healthConnectClient.permissionController.getGrantedPermissions()
  if (granted.containsAll(PERMISSIONS)) {
    // Permissions already granted; proceed with inserting or reading data
  } else {
    requestPermissions.launch(PERMISSIONS)
  }
}

İzinlerin sabit olduğunu varsaymayın, çünkü kullanıcılar izin verebilir ya da iptal edebilir. istediğiniz zaman değiştirebilirsiniz. Uygulamanızın verilen izinleri düzenli olarak kontrol etmesi gerekiyor. ve iznin kaybedildiği senaryoları ele alma.

5. Adım: İşlemleri gerçekleştirme

Her şey hazır olduğuna göre uygulamanızda okuma ve yazma işlemleri gerçekleştirin.

Verileri yazma

Verilerinizi bir kayıt olarak yapılandırın. Daha fazla bilgi için Health Connect'teki veri türleri hakkında bilgi edinin.

val stepsRecord = StepsRecord(
    count = 120,
    startTime = START_TIME,
    endTime = END_TIME,
    startZoneOffset = START_ZONE_OFFSET,
    endZoneOffset = END_ZONE_OFFSET,
)

Ardından insertRecords kullanarak kaydınızı yazın.

suspend fun insertSteps(healthConnectClient: HealthConnectClient) {
    try {
        val stepsRecord = StepsRecord(
            count = 120,
            startTime = START_TIME,
            endTime = END_TIME,
            startZoneOffset = START_ZONE_OFFSET,
            endZoneOffset = END_ZONE_OFFSET,
        )
        healthConnectClient.insertRecords(listOf(stepsRecord))
    } catch (e: Exception) {
        // Run error handling here
    }
}

Verileri okuma

readRecords kullanarak verilerinizi tek tek okuyabilirsiniz.

suspend fun readStepsByTimeRange(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    try {
        val response =
            healthConnectClient.readRecords(
                ReadRecordsRequest(
                    StepsRecord::class,
                    timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
                )
            )
        for (stepRecord in response.records) {
            // Process each step record
        }
    } catch (e: Exception) {
        // Run error handling here.
    }
}

Ayrıca, toplu e-tablo kullanarak verilerinizi toplu bir şekilde okuyabilirsiniz: aggregate.

suspend fun aggregateSteps(
    healthConnectClient: HealthConnectClient,
    startTime: Instant,
    endTime: Instant
) {
    try {
        val response = healthConnectClient.aggregate(
            AggregateRequest(
                metrics = setOf(StepsRecord.COUNT_TOTAL),
                timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
            )
        )
        // The result may be null if no data is available in the time range
        val stepCount = response[StepsRecord.COUNT_TOTAL]
    } catch (e: Exception) {
        // Run error handling here
    }
}

Video eğiticiler

Health Connect özellikleri hakkında daha fazla bilgi veren bu videoları da izleyebilirsiniz. şu en iyi uygulama yönergeleridir:

Kaynaklar

Aşağıdaki kaynaklardan size yardımcı olacak daha sonra da devam edebilir.

  • Health Connect SDK'sı (Jetpack'te kullanılabilir): Bu SDK'yı uygulamasını kullanın.
  • API referansı: Şu kod için Jetpack referansına bakın: Health Connect API'ye gidin.
  • Veri türlerinin kullanımını beyan etme: Play Console'da, Health Connect veri türlerine erişimi beyan etmenizde okuması ve yazması gerektiğini unutmayın.
  • İsteğe bağlı GitHub kodu örneği ve codelab: GitHub kod örneğine göz atın repository ve codelab alıştırmasını kullanarak başladı.
ziyaret edin.

Sonraki adımlar

İşlemlerin nasıl gerçekleştirileceğini öğrenmek için Yaygın iş akışları Health Connect, örneğin: