Xamarin iOS 从 HealthKit 读取步数
Posted
技术标签:
【中文标题】Xamarin iOS 从 HealthKit 读取步数【英文标题】:Xamarin iOS Reading Step Counts from HealthKit 【发布时间】:2017-10-03 13:56:59 【问题描述】:我正在尝试从用户那里及时读取 365 天的步数,然后将其上传到服务器。但是我目前卡在提取数据上,我正确获得了 ios healthkit 的许可,但是我的数据的返回类型只是 get "[0:] HealthKit.HKSample[]"
public void GetSteps()
var healthKitStore = new HKHealthStore();
var stepRateType = HKQuantityType.Create(HKQuantityTypeIdentifier.StepCount);
var sort = new NSSortDescriptor(HKSample.SortIdentifierStartDate, true);
var q = new HKSampleQuery(stepRateType, HKQuery.GetPredicateForSamples(NSDate.Now.AddSeconds(TimeSpan.FromDays(-365).TotalSeconds), NSDate.Now.AddSeconds(TimeSpan.FromDays(1).TotalSeconds), HKQueryOptions.None), 0, new NSSortDescriptor[] ,
new HKSampleQueryResultsHandler((HKSampleQuery query2,HKSample[] results, NSError error2) =>
var query = results; //property created within the model to expose later.
Debug.WriteLine(query);
Debug.WriteLine(results);
));
healthKitStore.ExecuteQuery(q);
【问题讨论】:
详细文档和演示在这里:developer.xamarin.com/guides/ios/platform_features/… 我已阅读该指南,但在此处找不到任何有助于解决数据问题的内容。 【参考方案1】:我想我知道你为什么得到“[0:] HealthKit.HKSample[]”,你正在尝试 Debug.WriteLine 一个对象数组。结果变量是一个数组。而是循环遍历数组,并在其他可用字段中提取“数量”、“开始日期”和“结束日期”:
foreach (var item in results)
var sample = (HKQuantitySample) item;
var hkUnit = HKUnit.Count;
var quantity = sample.Quantity.GetDoubleValue(hkUnit);
var startDateTime = sample.StartDate.ToDateTime().ToLocalTime();
var endDateTime = sample.EndDate.ToDateTime().ToLocalTime();
Debug.WriteLine(quantity);
Debug.WriteLine(startDateTime);
Debug.WriteLine(endDateTime);
【讨论】:
以上是关于Xamarin iOS 从 HealthKit 读取步数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Xamarin Forms 从 HealthKit 读取 ECG 数据
如何使用 Xamarin Forms 从 HealthKit 读取 ECG 数据
由于 HEALTHKIT 参考,Xamarin.ios 构建被拒绝
由于 HEALTHKIT 参考,Xamarin.ios 构建被拒绝