Ich versuche, eine einfache App, die Schrittzähler Daten auf einem Windows 10-Telefon verwendet. Normalerweise lebe ich im Kernel-Land, und das ist das erste Mal, dass ich die meisten C# Async-Sachen benutze, also frage ich mich, ob mir hier ein Kernkonzept fehlt.Async Pedometer.GetSystemHistoryAsync-API für Universal-Apps stürzt ab
Mein erster Versuch, Daten zu erhalten, bestand darin, einfach die Anzahl der aufgezeichneten Schritte der letzten Stunde in einem Textfeld in meiner XAML-App zu melden. Ich habe nur einen einfachen XAML-App, fiel in ein Textfeld, und hinzugefügt, um diese Ereignishandler:
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();
}
Ein Haltepunkt in der ersten Zeile löst, aber bevor es die nächste Zeile trifft erhalte ich eine nicht behandelte Ausnahme. Fehlercode -2147467259, Nachricht "Fehler HRESULT E_FAIL wurde von einem Aufruf an eine COM-Komponente zurückgegeben."
Der oberste Frame des Stacks befindet sich in meinem Code, aber es ist nur die BoilerPlate-Zeile von App.g.i.cs, die eine Pause bei einer nicht behandelten Ausnahme auslöst. Darunter ist mscorlib und der WinRT-Aufrufer.
Ich schaute durch die Liste der App-Funktionen im Manifest und fand nichts, was aussah wie es auf den Schrittzähler angewendet wurde. Ich teste diese auf einem Lumia 950.
UPDATE: Ich habe gerade versucht, die API-Aufruf der Standard-Pedometer-Sensor zu erhalten:
Pedometer p = await Pedometer.GetDefaultAsync();
Es stellt sich heraus, dass dies löst eine Zugriff verweigert Ausnahme mit der gleichen wertlos Stapel. Ich mache derzeit mehr Forschung, um zu sehen, ob etwas im Manifest spezifiziert werden muss.