NSCalendar calendar = NSCalendar.CurrentCalendar;
NSDateComponents interval = new NSDateComponents
{
Hour = 24
};
NSDateComponents anchorComponents = calendar.Components(NSCalendarUnit.Day | NSCalendarUnit.Month |
NSCalendarUnit.Year | NSCalendarUnit.Weekday, NSDate.Now);
anchorComponents.Hour = 0;
NSDate anchorDate = calendar.DateFromComponents(anchorComponents);
NSPredicate nSPredicate = HKQuery.GetPredicateForMetadataKey(HKMetadataKey.WasUserEntered, NSPredicateOperatorType.NotEqualTo, NSObject.FromObject(true));
HKStatisticsCollectionQuery query = new HKStatisticsCollectionQuery(quantityType, nSPredicate,
HKStatisticsOptions.CumulativeSum, anchorDate, interval)
{
InitialResultsHandler = new HKStatisticsCollectionQueryInitialResultsHandler((quer, results, error) =>
{
if (error != null)
{
completion?.Invoke();
return;
}
HealthkitDataModel uploadData = new HealthkitDataModel
{
StepsList = new List<HealthkitData>()
};
results.EnumerateStatistics(startTime, NSDate.Now, (result, stop) =>
{
HKQuantity quantity = result.SumQuantity();
if (quantity != null)
{
double value = quantity.GetDoubleValue(unit);
if (value > 0)
{
uploadData.StepsList.Add(new HealthkitData
{
Value = value.ToString(System.Globalization.CultureInfo.InvariantCulture),
Date = result.StartDate.ToLocalDateTime().ToString("yyyy-MM-dd")
});
System.Diagnostics.Debug.WriteLine("steps: "+value);
}
}
});
if (uploadData.StepsList.Count == 0)
{
completion?.Invoke();
return;
}
var jsonString = CommHelper.ConverterStringFromModel(uploadData);
System.Diagnostics.Debug.WriteLine(jsonString);
UploadData(jsonString, () => { UpdateLocalSteps().Continue();completion(); });
})
};
AppDelegate.Instance.HealthStore.ExecuteQuery(query);
Xamarin.iOS 获取健康计步数据
最新推荐文章于 2018-11-15 12:00:53 发布