1

我正在尝试在 Windows 10 手机上组合一个使用计步器数据的简单应用程序。我通常住在内核领域,这是我第一次使用大多数 c# 异步的东西,所以我想知道我是否在这里遗漏了一个核心概念。

我第一次尝试获取数据是简单地将过去一小时内记录的步骤数报告到我的 XAML 应用程序中的文本框。我刚刚创建了一个基本的 XAML 应用程序,放入了一个文本框,并添加了这个事件处理程序:

private async void Page_Loaded(object sender, RoutedEventArgs e)
{
    var history = await Pedometer.GetSystemHistoryAsync(DateTimeOffset.Now.AddHours(-1), TimeSpan.FromHours(1));
    int count = history.Sum(entry => entry.CumulativeSteps);
    textSteps.Text = count.ToString();
}

第一行上的断点触发,但在它到达下一行之前,我得到一个未处理的异常。错误代码 -2147467259,消息“错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回。”

堆栈的顶部框架在我的代码中,但它只是 App.gics 中的样板代码行,它触发了未处理异常的中断。下面是 mscorlib 和 WinRT 调用程序。

我查看了清单中的应用功能列表,并没有发现任何看起来像是应用于计步器的东西。我正在 Lumia 950 上进行测试。

更新:我刚刚尝试调用 API 来获取默认的计步器传感器:

Pedometer p = await Pedometer.GetDefaultAsync();

事实证明,这会触发具有相同无价值堆栈的访问被拒绝异常。我目前正在做更多的研究,看看是否需要在清单中指定一些东西。

4

2 回答 2

1

在进一步试验后,我得到了拒绝访问错误,我更多地查看了清单。计步器的清单 Microsoft 示例项目声明了一个我无法通过设计器视图添加的设备属性。将其添加到代码中效果很好。据说我在过去的一个小时里已经走了 300,000 步,但我相信一些简单的调试会在那里找到答案。(该属性称为 CumulativeSteps,所以这是一个很好的提示......)

<Capabilities>
    <DeviceCapability Name="activity" />
</Capabilities>
于 2016-09-20T21:37:27.170 回答
0
var currentReadings = await Pedometer.GetSystemHistoryAsync(DateTime.Today);
                var walklist = new List<PedometerReading>();
                var runlist = new List<PedometerReading>();
                foreach (var cuurentreading in currentReadings)
                {
                    if (cuurentreading.StepKind == PedometerStepKind.Walking)
                    {
                        walklist.Add(cuurentreading);
                    }
                    if (cuurentreading.StepKind == PedometerStepKind.Running)
                    {
                        runlist.Add(cuurentreading);
                    }
                }
                var item = walklist.Last();
                var item1 = walklist.First();
                var item2 = runlist.Last();
                var item3 = runlist.First();
                Steps1.Value += (item.CumulativeSteps - item1.CumulativeSteps);
                Steps1.Value += (item2.CumulativeSteps - item3.CumulativeSteps);
于 2018-04-03T04:45:15.043 回答