マインドフルネスの実施

このガイドは、ヘルスコネクト バージョン 1.1.0-rc01 に対応しています。

ヘルスコネクトには、ストレスや不安など、メンタル ヘルスのさまざまな側面を測定するマインドフルネス データ型が用意されています。マインドフルネスは、ヘルスコネクトの全体的なウェルネスに含まれるデータ型です。

機能の提供状況

ユーザーのデバイスがヘルスコネクトでマインドフルネス セッションの記録をサポートしているかどうかを確認するには、クライアントで FEATURE_MINDFULNESS_SESSION の可用性を確認します。

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_MINDFULNESS_SESSION
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}

詳しくは、機能の提供状況を確認するをご覧ください。

必要な権限

ヘルスコネクトの他のどのデータタイプと同様に、マインドフルネス セッションへのアクセスは、READ_MINDFULNESSWRITE_MINDFULNESS の 2 つの権限によって保護されています。

ユーザーに権限をリクエストする

クライアント インスタンスを作成した後、アプリはユーザーに権限をリクエストする必要があります。ユーザーがいつでも権限を付与または拒否できるようにする必要があります。

そのためには、必要なデータ型の権限セットを作成します。まず、セット内の権限が Android マニフェストで宣言されていることを確認します。

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

getGrantedPermissions を使用して、アプリが必要な権限をすでに持っているかどうかを確認します。持っていない場合は、createRequestPermissionResultContract を使用して権限をリクエストします。ヘルスコネクトの権限画面が表示されます。

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

ユーザーはいつでも権限を付与または取り消すことができるため、アプリは許可されている権限を定期的に確認し、権限が失われた場合に対処する必要があります。

マインドフルネス セッション レコードに含まれる情報

各マインドフルネス セッション レコードには、ユーザーが行うマインドフルネス セッションの種類(瞑想、呼吸、運動など)がキャプチャされます。レコードには、セッションに関する追加のメモを含めることもできます。

サポートされている集計

このデータ型では、サポートされている集計はありません。

使用例

次のコード スニペットは、Jetpack ライブラリを使用して瞑想マインドフルネス セッションを作成する方法を示しています。

if (healthConnectClient.features.getFeatureStatus(FEATURE_MINDFULNESS_SESSION) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
        healthConnectClient.insertRecords(listOf(MindfulnessSessionRecord(
            startTime = Instant.now().minus(Duration.ofHours(1)),
            startZoneOffset = ZoneOffset.UTC,
            endTime = Instant.now(),
            endZoneOffset = ZoneOffset.UTC,
            mindfulnessSessionType = MindfulnessSessionRecord.MINDFULNESS_SESSION_TYPE_MEDITATION,
            title = "Lake meditation",
            notes = "Meditation by the lake",
            metadata = Metadata.activelyRecorded(
                clientRecordId = "myid",
                clientRecordVersion = 0.0,
                device = Device(type = Device.TYPE_PHONE)
            ),
        )))
    }