מעקב אחר מיינדפולנס

המדריך הזה תואם לגרסה 1.1.0-rc01 של Health Connect.

ב-Health Connect יש סוג נתונים של מיינדפולנס למדידת היבטים שונים של בריאות הנפש, כמו לחץ וחרדה. 'תרגול מיינדפולנס' הוא סוג נתונים שנכלל בקטגוריה 'רווחה כללית' ב-Health Connect.

זמינות התכונות

כדי לבדוק אם המכשיר של המשתמש תומך ברישום סשנים של מדיטציה ב-Health Connect, צריך לבדוק את הזמינות של FEATURE_MINDFULNESS_SESSION בלקוח:

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

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

מידע נוסף זמין במאמר בדיקת זמינות התכונות.

הרשאות נדרשות

כמו כל סוג נתונים ב-Health Connect, הגישה לסשן של תרגול מיינדפולנס מוגנת על ידי שתי הרשאות: READ_MINDFULNESS ו-WRITE_MINDFULNESS.

בקשת הרשאות מהמשתמש

אחרי שיוצרים מכונה של לקוח, האפליקציה צריכה לבקש הרשאות מהמשתמש. המשתמשים צריכים להיות מורשים להעניק או לדחות הרשאות בכל שלב.

כדי לעשות זאת, יוצרים קבוצת הרשאות לסוגים הנדרשים של נתונים. קודם צריך לוודא שההרשאות בקבוצה הוצהרו במניפסט של Android.

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

אפשר להשתמש ב-getGrantedPermissions כדי לבדוק אם האפליקציה כבר קיבלה את ההרשאות הנדרשות. אם לא, צריך להשתמש ב-createRequestPermissionResultContract כדי לבקש את ההרשאות האלה. יוצג המסך של הרשאות Health Connect.

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