Pebble Foundation Classes
0.2.0
C++ for Pebble
|
Get access to health information like step count, sleep totals, etc. More...
Classes | |
struct | HealthMinuteData |
Macros | |
#define | HealthActivityMaskAll ((HealthActivityOpenWorkout << 1) - 1) |
A mask value representing all available activities. | |
#define | PBL_IF_HEALTH_ELSE(if_true, if_false) (if_true) |
#define | HealthActivityMaskAll ((HealthActivityOpenWorkout << 1) - 1) |
A mask value representing all available activities. | |
#define | PBL_IF_HEALTH_ELSE(if_true, if_false) (if_true) |
Typedefs | |
typedef int32_t | HealthValue |
Type used to represent HealthMetric values. | |
typedef struct HealthMetricAlert | HealthMetricAlert |
typedef uint32_t | HealthActivityMask |
Expresses a set of HealthActivity values as a bitmask. | |
typedef bool(* | HealthActivityIteratorCB) (HealthActivity activity, time_t time_start, time_t time_end, void *context) |
typedef void(* | HealthEventHandler) (HealthEventType event, void *context) |
typedef enum AmbientLightLevel | AmbientLightLevel |
Light level enum. | |
typedef int32_t | HealthValue |
Type used to represent HealthMetric values. | |
typedef struct HealthMetricAlert | HealthMetricAlert |
typedef uint32_t | HealthActivityMask |
Expresses a set of HealthActivity values as a bitmask. | |
typedef bool(* | HealthActivityIteratorCB) (HealthActivity activity, time_t time_start, time_t time_end, void *context) |
typedef void(* | HealthEventHandler) (HealthEventType event, void *context) |
typedef enum AmbientLightLevel | AmbientLightLevel |
Light level enum. | |
Get access to health information like step count, sleep totals, etc.
The HealthService provides your app access to the step count and sleep activity of the user.
#define PBL_IF_HEALTH_ELSE | ( | if_true, | |
if_false | |||
) | (if_true) |
Convenience macro to switch between two expressions depending on health support. On platforms with health support the first expression will be chosen, the second otherwise.
#define PBL_IF_HEALTH_ELSE | ( | if_true, | |
if_false | |||
) | (if_true) |
Convenience macro to switch between two expressions depending on health support. On platforms with health support the first expression will be chosen, the second otherwise.
typedef bool(* HealthActivityIteratorCB) (HealthActivity activity, time_t time_start, time_t time_end, void *context) |
Callback used by health_service_activities_iterate().
activity | Which activity the caller is being informed about. |
time_start | Start UTC time of the activity. |
time_end | End UTC time of the activity. |
context | The context parameter initially passed to health_service_activities_iterate(). |
true
if you are interested in more activities, or false
to stop iterating. typedef bool(* HealthActivityIteratorCB) (HealthActivity activity, time_t time_start, time_t time_end, void *context) |
Callback used by health_service_activities_iterate().
activity | Which activity the caller is being informed about. |
time_start | Start UTC time of the activity. |
time_end | End UTC time of the activity. |
context | The context parameter initially passed to health_service_activities_iterate(). |
true
if you are interested in more activities, or false
to stop iterating. typedef void(* HealthEventHandler) (HealthEventType event, void *context) |
Developer-supplied event handler, called when a health-related event occurs after subscribing via health_service_events_subscribe();
event | The type of health-related event that occured. |
context | The developer-supplied context pointer. |
typedef void(* HealthEventHandler) (HealthEventType event, void *context) |
Developer-supplied event handler, called when a health-related event occurs after subscribing via health_service_events_subscribe();
event | The type of health-related event that occured. |
context | The developer-supplied context pointer. |
typedef struct HealthMetricAlert HealthMetricAlert |
Type used as a handle to a registered metric alert (returned by health_service_register_metric_alert)
typedef struct HealthMetricAlert HealthMetricAlert |
Type used as a handle to a registered metric alert (returned by health_service_register_metric_alert)
enum HealthActivity |
Health-related activities that can be accessed using.
enum HealthActivity |
Health-related activities that can be accessed using.
enum HealthAggregation |
Used by health_service_aggregate_averaged() to specify what type of aggregation to perform. This aggregation is applied to the metric before the average is computed.
Enumerator | |
---|---|
HealthAggregationSum | Sum the metric. The result is the same as calling health_service_sum_averaged(). This operation is only applicable for metrics that accumulate, like HealthMetricStepCount, HealthMetricActiveSeconds, etc. |
HealthAggregationAvg | Use the average of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationMin | Use the minimum value of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationMax | Use the maximum value of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationSum | Sum the metric. The result is the same as calling health_service_sum_averaged(). This operation is only applicable for metrics that accumulate, like HealthMetricStepCount, HealthMetricActiveSeconds, etc. |
HealthAggregationAvg | Use the average of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationMin | Use the minimum value of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationMax | Use the maximum value of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
enum HealthAggregation |
Used by health_service_aggregate_averaged() to specify what type of aggregation to perform. This aggregation is applied to the metric before the average is computed.
Enumerator | |
---|---|
HealthAggregationSum | Sum the metric. The result is the same as calling health_service_sum_averaged(). This operation is only applicable for metrics that accumulate, like HealthMetricStepCount, HealthMetricActiveSeconds, etc. |
HealthAggregationAvg | Use the average of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationMin | Use the minimum value of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationMax | Use the maximum value of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationSum | Sum the metric. The result is the same as calling health_service_sum_averaged(). This operation is only applicable for metrics that accumulate, like HealthMetricStepCount, HealthMetricActiveSeconds, etc. |
HealthAggregationAvg | Use the average of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationMin | Use the minimum value of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
HealthAggregationMax | Use the maximum value of the metric. This is only applicable for metrics that measure instantaneous values, like HealthMetricHeartRateBPM |
enum HealthEventType |
Health event enum. Passed into the HealthEventHandler.
Enumerator | |
---|---|
HealthEventSignificantUpdate | All data is considered as outdated and apps should re-read all health data. This happens after an app is subscribed via health_service_events_subscribe(), on a change of the day, or in other cases that significantly change the underlying data. |
HealthEventMovementUpdate | Recent values around HealthMetricStepCount, HealthMetricActiveSeconds, or HealthMetricWalkedDistanceMeters have changed. |
HealthEventSleepUpdate | Recent values around HealthMetricSleepSeconds, HealthMetricSleepRestfulSeconds, HealthActivitySleep, and HealthActivityRestfulSleep changed. |
HealthEventMetricAlert | A metric has crossed the threshold set by health_service_register_metric_alert. |
HealthEventHeartRateUpdate | Value of HealthMetricHeartRateBPM or HealthMetricHeartRateRawBPM has changed. |
HealthEventSignificantUpdate | All data is considered as outdated and apps should re-read all health data. This happens after an app is subscribed via health_service_events_subscribe(), on a change of the day, or in other cases that significantly change the underlying data. |
HealthEventMovementUpdate | Recent values around HealthMetricStepCount, HealthMetricActiveSeconds, or HealthMetricWalkedDistanceMeters have changed. |
HealthEventSleepUpdate | Recent values around HealthMetricSleepSeconds, HealthMetricSleepRestfulSeconds, HealthActivitySleep, and HealthActivityRestfulSleep changed. |
HealthEventMetricAlert | A metric has crossed the threshold set by health_service_register_metric_alert. |
HealthEventHeartRateUpdate | Value of HealthMetricHeartRateBPM or HealthMetricHeartRateRawBPM has changed. |
enum HealthEventType |
Health event enum. Passed into the HealthEventHandler.
Enumerator | |
---|---|
HealthEventSignificantUpdate | All data is considered as outdated and apps should re-read all health data. This happens after an app is subscribed via health_service_events_subscribe(), on a change of the day, or in other cases that significantly change the underlying data. |
HealthEventMovementUpdate | Recent values around HealthMetricStepCount, HealthMetricActiveSeconds, or HealthMetricWalkedDistanceMeters have changed. |
HealthEventSleepUpdate | Recent values around HealthMetricSleepSeconds, HealthMetricSleepRestfulSeconds, HealthActivitySleep, and HealthActivityRestfulSleep changed. |
HealthEventMetricAlert | A metric has crossed the threshold set by health_service_register_metric_alert. |
HealthEventHeartRateUpdate | Value of HealthMetricHeartRateBPM or HealthMetricHeartRateRawBPM has changed. |
HealthEventSignificantUpdate | All data is considered as outdated and apps should re-read all health data. This happens after an app is subscribed via health_service_events_subscribe(), on a change of the day, or in other cases that significantly change the underlying data. |
HealthEventMovementUpdate | Recent values around HealthMetricStepCount, HealthMetricActiveSeconds, or HealthMetricWalkedDistanceMeters have changed. |
HealthEventSleepUpdate | Recent values around HealthMetricSleepSeconds, HealthMetricSleepRestfulSeconds, HealthActivitySleep, and HealthActivityRestfulSleep changed. |
HealthEventMetricAlert | A metric has crossed the threshold set by health_service_register_metric_alert. |
HealthEventHeartRateUpdate | Value of HealthMetricHeartRateBPM or HealthMetricHeartRateRawBPM has changed. |
Iteration direction, passed to health_service_activities_iterate(). When iterating backwards (HealthIterationDirectionPast
), activities that have a greater value for time_end
come first. When iterating forward (HealthIterationDirectionFuture
), activities that have a smaller value for time_start
come first.
Iteration direction, passed to health_service_activities_iterate(). When iterating backwards (HealthIterationDirectionPast
), activities that have a greater value for time_end
come first. When iterating forward (HealthIterationDirectionFuture
), activities that have a smaller value for time_start
come first.
enum HealthMetric |
Health metric values used to retrieve health data. For example, using health_service_sum().
enum HealthMetric |
Health metric values used to retrieve health data. For example, using health_service_sum().
Possible values returned by health_service_metric_accessible(). The values are used in combination as a bitmask. For example, to check if any data is available for a given request use: bool any_data_available = value & HealthServiceAccessibilityMaskAvailable;
Enumerator | |
---|---|
HealthServiceAccessibilityMaskAvailable | Return values are available and represent the collected health information. |
HealthServiceAccessibilityMaskNoPermission | The user hasn't granted permission. |
HealthServiceAccessibilityMaskNotSupported | The queried combination of time span and HealthMetric or HealthActivityMask is currently unsupported. |
HealthServiceAccessibilityMaskNotAvailable | No samples were recorded for the given time span. |
HealthServiceAccessibilityMaskAvailable | Return values are available and represent the collected health information. |
HealthServiceAccessibilityMaskNoPermission | The user hasn't granted permission. |
HealthServiceAccessibilityMaskNotSupported | The queried combination of time span and HealthMetric or HealthActivityMask is currently unsupported. |
HealthServiceAccessibilityMaskNotAvailable | No samples were recorded for the given time span. |
Possible values returned by health_service_metric_accessible(). The values are used in combination as a bitmask. For example, to check if any data is available for a given request use: bool any_data_available = value & HealthServiceAccessibilityMaskAvailable;
Enumerator | |
---|---|
HealthServiceAccessibilityMaskAvailable | Return values are available and represent the collected health information. |
HealthServiceAccessibilityMaskNoPermission | The user hasn't granted permission. |
HealthServiceAccessibilityMaskNotSupported | The queried combination of time span and HealthMetric or HealthActivityMask is currently unsupported. |
HealthServiceAccessibilityMaskNotAvailable | No samples were recorded for the given time span. |
HealthServiceAccessibilityMaskAvailable | Return values are available and represent the collected health information. |
HealthServiceAccessibilityMaskNoPermission | The user hasn't granted permission. |
HealthServiceAccessibilityMaskNotSupported | The queried combination of time span and HealthMetric or HealthActivityMask is currently unsupported. |
HealthServiceAccessibilityMaskNotAvailable | No samples were recorded for the given time span. |
Used by health_service_sum_averaged() to specify how the average is computed.
Enumerator | |
---|---|
HealthServiceTimeScopeOnce | No average computed. The result is the same as calling health_service_sum(). |
HealthServiceTimeScopeWeekly | Compute average using the same day from each week. For example, every Monday if the passed in time range falls on a Monday. |
HealthServiceTimeScopeDailyWeekdayOrWeekend | Compute average using either weekdays (Monday to Friday) or weekends (Saturday and Sunday), depending on which day the passed in time range falls. |
HealthServiceTimeScopeDaily | Compute average across all days of the week. |
HealthServiceTimeScopeOnce | No average computed. The result is the same as calling health_service_sum(). |
HealthServiceTimeScopeWeekly | Compute average using the same day from each week. For example, every Monday if the passed in time range falls on a Monday. |
HealthServiceTimeScopeDailyWeekdayOrWeekend | Compute average using either weekdays (Monday to Friday) or weekends (Saturday and Sunday), depending on which day the passed in time range falls. |
HealthServiceTimeScopeDaily | Compute average across all days of the week. |
Used by health_service_sum_averaged() to specify how the average is computed.
Enumerator | |
---|---|
HealthServiceTimeScopeOnce | No average computed. The result is the same as calling health_service_sum(). |
HealthServiceTimeScopeWeekly | Compute average using the same day from each week. For example, every Monday if the passed in time range falls on a Monday. |
HealthServiceTimeScopeDailyWeekdayOrWeekend | Compute average using either weekdays (Monday to Friday) or weekends (Saturday and Sunday), depending on which day the passed in time range falls. |
HealthServiceTimeScopeDaily | Compute average across all days of the week. |
HealthServiceTimeScopeOnce | No average computed. The result is the same as calling health_service_sum(). |
HealthServiceTimeScopeWeekly | Compute average using the same day from each week. For example, every Monday if the passed in time range falls on a Monday. |
HealthServiceTimeScopeDailyWeekdayOrWeekend | Compute average using either weekdays (Monday to Friday) or weekends (Saturday and Sunday), depending on which day the passed in time range falls. |
HealthServiceTimeScopeDaily | Compute average across all days of the week. |
enum MeasurementSystem |
Types of measurement system a HealthMetric may be measured in.
enum MeasurementSystem |
Types of measurement system a HealthMetric may be measured in.
void health_service_activities_iterate | ( | HealthActivityMask | activity_mask, |
time_t | time_start, | ||
time_t | time_end, | ||
HealthIterationDirection | direction, | ||
HealthActivityIteratorCB | callback, | ||
void * | context | ||
) |
Iterates backwards or forward within a given time span to list all recorded activities. For example, this can be used to find the last recorded sleep phase or all deep sleep phases in a given time range. Any activity that overlaps with time_start
and time_end
will be included, even if the start time starts before time_start
or end time ends after time_end
.
activity_mask | A bitmask containing set of activities you are interested in. |
time_start | UTC time of the earliest time you are interested in. |
time_end | UTC time of the latest time you are interested in. |
direction | The direction in which to iterate. |
callback | Developer-supplied callback that is called for each activity iterated over. |
context | Developer-supplied context pointer that is passed to the callback. |
HealthValue health_service_aggregate_averaged | ( | HealthMetric | metric, |
time_t | time_start, | ||
time_t | time_end, | ||
HealthAggregation | aggregation, | ||
HealthServiceTimeScope | scope | ||
) |
Return the value of an aggregated metric over a given time range. This call is more flexible than health_service_sum_averaged because it lets you specify which aggregation function to perform.
The aggregation function aggregation
is applied to the metric metric
over the given time range time_start
to time_end
first, and then an average is computed based on the passed in scope
.
For example, if you want to get the average number of steps taken from 12 AM (midnight) to 9 AM across all days you would specify: time_t time_start = time_start_of_today();
time_t time_end = time_start + (9 * SECONDS_PER_HOUR);
HealthValue value = health_service_aggregate_averaged(HealthMetricStepCount, time_start, time_end, HealthAggregationSum, HealthServiceTimeScopeDaily);
If you want to compute the average heart rate on Mondays and today is a Monday, you would specify: time_t time_start = time_start_of_today()
, time_t time_end = time_start + SECONDS_PER_DAY
, HealthValue value = health_service_aggregate_averaged(HealthMetricHeartRateBPM, time_start, time_end, HealthAggregationAvg, HealthServiceTimeScopeWeekly);
To get the average of the minimum heart rate seen on Mondays for example, you would instead pass in HealthAggregationMin
Certain HealthAggregation operations are only applicable to certain types of metrics. See the notes above on HealthAggregation for details. Use health_service_metric_aggregate_averaged_accessible to check for applicability at run time.
metric | Which HealthMetric to query. |
time_start | UTC time of the start of the query interval. |
time_end | UTC time of the end of the query interval. |
aggregation | the aggregation function to perform on the metric. This operation is performed across the passed in time range time_start to time_end . |
scope | HealthServiceTimeScope value describing how the average should be computed. Use HealthServiceTimeScopeOnce to not compute an average. |
HealthServiceAccessibilityMask health_service_any_activity_accessible | ( | HealthActivityMask | activity_mask, |
time_t | time_start, | ||
time_t | time_end | ||
) |
Check if a certain combination of metric, HealthActivityMask and time span is accessible. Developers should check if the return value is HealthServiceAccessibilityMaskAvailable before calling any other HealthService APIs that involve the given activities.
activity_mask | A bitmask of activities you are interested in. |
time_start | Earliest UTC time you are interested in. |
time_end | Latest UTC time you are interested in. |
bool health_service_cancel_metric_alert | ( | HealthMetricAlert * | alert | ) |
Cancel an metric alert previously created with health_service_register_metric_alert.
alert | the HealthMetricAlert previously returned by health_service_register_metric_alert |
true
on success, false
on failure bool health_service_events_subscribe | ( | HealthEventHandler | handler, |
void * | context | ||
) |
Subscribe to HealthService events. This allocates a cache on the application's heap of up to 2048 bytes that will be de-allocated if you call health_service_events_unsubscribe(). If there's not enough heap available, this function will return false
and will not subscribe to any events.
handler | Developer-supplied event handler function. |
context | Developer-supplied context pointer. |
true
on success, false
on failure. bool health_service_events_unsubscribe | ( | void | ) |
Unsubscribe from HealthService events.
true
on success, false
on failure. uint16_t health_service_get_heart_rate_sample_period_expiration_sec | ( | void | ) |
Return how long a heart rate sample period request (sent via health_service_set_heart_rate_sample_period
) will remain active after the app exits. If there is no current request by this app, this call will return 0.
MeasurementSystem health_service_get_measurement_system_for_display | ( | HealthMetric | metric | ) |
Get the preferred measurement system for a given HealthMetric, if the user has chosen a preferred system and it is applicable to that metric.
metric | A metric value chosen from HealthMetric. |
uint32_t health_service_get_minute_history | ( | HealthMinuteData * | minute_data, |
uint32_t | max_records, | ||
time_t * | time_start, | ||
time_t * | time_end | ||
) |
Return historical minute data records. This fills in the minute_data
array parameter with minute by minute statistics of the user's steps, average watch orientation, etc. The data is returned in time order, with the oldest minute data returned at minute_data[0]
.
minute_data | Pointer to an array of HealthMinuteData records that will be filled in with the historical minute data. | |
max_records | The maximum number of records the minute_data array can hold. | |
[in,out] | time_start | On entry, the UTC time of the first requested record. On exit, the UTC time of the first second of the first record actually returned. If time_start on entry is somewhere in the middle of a minute interval, this function behaves as if the caller passed in the start of that minute. |
[in,out] | time_end | On entry, the UTC time of the end of the requested range of records. On exit, the UTC time of the end of the last record actually returned (i.e. start time of last record + 60). If time_end on entry is somewhere in the middle of a minute interval, this function behaves as if the caller passed in the end of that minute. |
time_start
and time_end
are meaningless. It's not guaranteed that all records contain valid data, even if the return value is greater than zero. Check HealthMinuteData.is_invalid
to see if a given record contains valid data. HealthServiceAccessibilityMask health_service_metric_accessible | ( | HealthMetric | metric, |
time_t | time_start, | ||
time_t | time_end | ||
) |
Check if a certain combination of metric and time span is accessible using health_service_sum by returning a value of HealthServiceAccessibilityMask. Developers should check if the return value is HealthServiceAccessibilityMaskAvailable before calling health_service_sum.
Note that this call is the same as calling health_service_metric_averaged_accessible(metric, time_start, time_end, HealthServiceTimeScopeOnce)
metric | The metric to query for data. |
time_start | Earliest UTC time you are interested in. |
time_end | Latest UTC time you are interested in. |
HealthServiceAccessibilityMask health_service_metric_aggregate_averaged_accessible | ( | HealthMetric | metric, |
time_t | time_start, | ||
time_t | time_end, | ||
HealthAggregation | aggregation, | ||
HealthServiceTimeScope | scope | ||
) |
Check if a certain combination of metric, time span, aggregation operation, and scope is accessible for calculating aggregated, averaged data by returning a value of HealthServiceAccessibilityMask. Developers should check if the return value is HealthServiceAccessibilityMaskAvailable before calling health_service_aggregate_averaged.
metric | The metric to query for averaged data. |
time_start | Earliest UTC time you are interested in. |
time_end | Latest UTC time you are interested in. |
aggregation | The aggregation to perform |
scope | HealthServiceTimeScope value describing how the average should be computed. |
HealthServiceAccessibilityMask health_service_metric_averaged_accessible | ( | HealthMetric | metric, |
time_t | time_start, | ||
time_t | time_end, | ||
HealthServiceTimeScope | scope | ||
) |
Check if a certain combination of metric, time span, and scope is accessible for calculating summed, averaged data by returning a value of HealthServiceAccessibilityMask. Developers should check if the return value is HealthServiceAccessibilityMaskAvailable before calling health_service_sum_averaged.
Note that this call is the same as calling health_service_metric_aggregate_averaged_accessible(metric, time_start, time_end, HealthAggregationSum, HealthServiceTimeScopeOnce)
metric | The metric to query for averaged data. |
time_start | Earliest UTC time you are interested in. |
time_end | Latest UTC time you are interested in. |
scope | HealthServiceTimeScope value describing how the average should be computed. |
HealthActivityMask health_service_peek_current_activities | ( | void | ) |
Return a HealthActivityMask containing a set of bits, one set for each activity that is currently active.
HealthValue health_service_peek_current_value | ( | HealthMetric | metric | ) |
Convenience function for peeking at the current value of a metric. This is useful for metrics like HealthMetricHeartRateBPM that represent instantaneous values. It is NOT applicable for metrics like HealthMetricStepCount that must be accumulated over time (it will return 0 if passed that type of metric). This call is equivalent to calling health_service_aggregate_averaged(metric, time(NULL), time(NULL), HealthAggregationAvg, HealthServiceTimeScopeOnce)
metric | The metric to query. |
HealthMetricAlert * health_service_register_metric_alert | ( | HealthMetric | metric, |
HealthValue | threshold | ||
) |
Register for an alert when a metric crosses the given threshold. When the metric crosses this threshold (either goes above or below it), a HealthEventMetricAlert event will be generated. To cancel this registration, pass the returned HealthMetricAlert value to health_service_cancel_metric_alert. The only metric currently supported by this call is HealthMetricHeartRateBPM, but future versions may support additional metrics. To see if a specific metric is supported by this call, use: `time_t now = time(NULL); HealthServiceAccessibilityMask accessible = health_service_metric_aggregate_averaged_accessible(metric, now, now, HealthAggregationAvg, HealthServiceTimeScopeOnce); bool alert_supported = (accessible & HealthServiceAccessibilityMaskAvailable); ` In the current implementation, only one alert per metric can be registered at a time. Future implementations may support two or more simulataneous alert registrations per metric. To change the alert threshold in the current implementation, cancel the original registration using health_service_cancel_metric_alert
before registering the new threshold.
threshold | the threshold value |
bool health_service_set_heart_rate_sample_period | ( | uint16_t | interval_sec | ) |
Set the desired sampling period for heart rate readings. Normally, the system will sample the heart rate using a sampling period that is automatically chosen to provide useful information without undue battery drain (it automatically samples more often during periods of intense activity, and less often when the user is idle). If desired though, an application can request a specific sampling period using this call. The system will use this as a suggestion, but does not guarantee that the requested period will be used. The actual sampling period may be greater or less due to system needs or heart rate sensor reading quality issues. Each time a new heart rate reading becomes available, a HealthEventHeartRateUpdate
event will be sent to the application's HealthEventHandler
. The sample period request will remain in effect the entire time the app is running unless it is explicitly cancelled (by calling this method again with 0 as the desired interval). If the app exits without first cancelling the request, it will remain in effect even for a limited time afterwards. To determine how long it will remain active after the app exits, use health_service_get_heart_rate_sample_period_expiration_sec
. Unless the app explicitly needs to access to historical high-resolution heart rate data, it is best practice to always cancel the sample period request before exiting in order to maximize battery life. Historical heart rate data can be accessed using the health_service_get_minute_history
call.
interval_sec | desired interval between heart rate reading updates. Pass 0 to go back to automatically chosen intervals. |
true
on success, false
on failure HealthValue health_service_sum | ( | HealthMetric | metric, |
time_t | time_start, | ||
time_t | time_end | ||
) |
Return the sum of a HealthMetric's values over a time range. The time_start
and time_end
parameters define the range of time you want the sum for.
metric | The metric to query for data. |
time_start | UTC time of the earliest data item to incorporate into the sum. |
time_end | UTC time of the most recent data item to incorporate into the sum. |
HealthValue health_service_sum_averaged | ( | HealthMetric | metric, |
time_t | time_start, | ||
time_t | time_end, | ||
HealthServiceTimeScope | scope | ||
) |
Return the value of a metric's sum over a given time range between time_start
and time_end
. Using this call you can specify the time range that you are interested in getting the average for, as well as a scope
specifier on how to compute an average of the sum. For example, if you want to get the average number of steps taken from 12 AM (midnight) to 9 AM across all days you would specify: time_t time_start = time_start_of_today();
time_t time_end = time_start + (9 * SECONDS_PER_HOUR);
HealthValue value = health_service_sum_averaged(HealthMetricStepCount, time_start, time_end, HealthServiceTimeScopeDaily);
If you want the average number of steps taken on a weekday (Monday to Friday) and today is a Monday (in the local timezone) you would specify: time_start = time_start_of_today();
time_end = time_start + SECONDS_PER_DAY;
HealthValue value = health_service_sum_averaged(HealthMetricStepCount, time_start, time_end, HealthServiceTimeScopeDailyWeekdayOrWeekend);
Note that this call is the same as calling health_service_aggregate_averaged(metric, time_start, time_end, HealthAggregationSum, scope)
metric | Which HealthMetric to query. |
time_start | UTC time of the start of the query interval. |
time_end | UTC time of the end of the query interval. |
scope | HealthServiceTimeScope value describing how the average should be computed. |
HealthValue health_service_sum_today | ( | HealthMetric | metric | ) |
Convenience wrapper for health_service_sum() that returns the sum for today.
metric | The metric to query. |