public async void CaloriesByPeriod(DateTime start, DateTime end, Action <IEnumerable <double> > act) { start = TimeZoneInfo.ConvertTimeToUtc(start); end = TimeZoneInfo.ConvertTimeToUtc(end); using (DataReadRequest caloriesRequest = new DataReadRequest.Builder() .Aggregate(DataType.TypeCaloriesExpended, DataType.AggregateCaloriesExpended) .BucketByTime(1, TimeUnit.Days) .SetTimeRange(TimeUtility.DatetimeInMillis(start), TimeUtility.DatetimeInMillis(end), TimeUnit.Milliseconds) .Build()) using (DataReadResult caloriesResult = (DataReadResult)await ReadData(caloriesRequest)) act?.Invoke(GetFloatFromResult(caloriesResult).Select(x => Math.Round(x))); }
public async void ActiveTimeByPeriod(DateTime start, DateTime end, Action <IEnumerable <TimeSpan> > act) { start = TimeZoneInfo.ConvertTimeToUtc(start); end = TimeZoneInfo.ConvertTimeToUtc(end); using (DataReadRequest time = new DataReadRequest.Builder() .Aggregate(DataType.TypeActivitySegment, DataType.AggregateActivitySummary) .BucketByTime(1, TimeUnit.Days) .SetTimeRange(TimeUtility.DatetimeInMillis(start), TimeUtility.DatetimeInMillis(end), TimeUnit.Milliseconds) .Build()) using (DataReadResult caloriesResult = (DataReadResult)await ReadData(time)) act?.Invoke(GetIntFromResult(caloriesResult, new string[] { "duration" }).Select(x => TimeSpan.FromMinutes(x))); }
private DataReadRequest CreateRequest(DataType input, DataType output, DateTime start, DateTime end) => new DataReadRequest.Builder() .Aggregate(input, output) .BucketByTime(1, TimeUnit.Days) .SetTimeRange(TimeUtility.DatetimeInMillis(start), TimeUtility.DatetimeInMillis(end), TimeUnit.Milliseconds) .Build();