Windows 10 phone で歩数計データを使用するシンプルなアプリをまとめようとしています。私は通常、カーネル ランドに住んでおり、C# 非同期処理のほとんどを使用するのはこれが初めてなので、ここでコア コンセプトが欠けているのではないかと思っています。
データを取得するための最初の試みは、過去 1 時間に記録された歩数を 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、メッセージ「COM コンポーネントへの呼び出しからエラー HRESULT E_FAIL が返されました。」
スタックの一番上のフレームは私のコードにありますが、未処理の例外でブレークをトリガーするのは、App.gics のボイラープレート行だけです。その下には mscorlib と WinRT インボーカーがあります。
マニフェストのアプリ機能リストを調べましたが、歩数計に適用されているように見えるものは見つかりませんでした。これをLumia 950でテストしています。
更新: API を呼び出して、デフォルトの歩数計センサーを取得しようとしました:
Pedometer p = await Pedometer.GetDefaultAsync();
これにより、同じ価値のないスタックでアクセス拒否例外がトリガーされることが判明しました。現在、マニフェストで指定する必要があるものがあるかどうかを確認するために、さらに調査を行っています。