情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 の .NET 位置情報 API のベスト プラクティス

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 のみ

メモメモ:

Windows Phone 8 には、位置認識アプリを作成するための新しい Windows Phone ランタイム API が用意されています。このトピックの内容は、Windows Phone OS 7.0 で導入され、引き続き完全にサポートされている .NET Location API に適用されます。どの API セットがアプリケーションに適しているかについては、「Windows Phone 8 の位置情報」を参照してください。

このトピックでは、位置情報サービスを使用する Windows Phone アプリケーションに対する推奨事項を示します。

位置に対応したアプリケーションを作成する際、開発者は、アプリケーションで正確な位置データを実現することの必要性と、アプリケーションの電力消費量を最小限に抑えたいという要求との間で、バランスをとる必要があります。モバイル デバイスでは、これらの 2 つのアプリケーション要件は逆相関の関係にあります。 Wi-Fi やセル無線など、比較的精度の低い位置情報を生成するハードウェアは、通常はより正確な位置データを取得できる GPS レシーバーよりも、電力消費量が小さくなります。アプリケーションを設計する際は、順守すべき基本規則が 2 つあります。

  • 位置情報サービスには、アプリケーションがより高い精度を特に必要としない限り、比較的精度が低い電力最適化設定を使用します。

  • 位置情報サービスは、アプリケーションで必要な場合にのみオンにし、作業が終了したらオフにします。

位置データに適切な精度レベルを選択する

位置情報サービスは複数の位置情報ソースを使用し、所定の時点でいずれのソースも使用できない (たとえば、GPS サテライトや携帯電話基地局がアクセス不能である) 場合があるものの、ネイティブ コード層は、使用できるデータを評価し、最良のソース セットを選択するという処理を行います。アプリケーションは、高精度設定または既定の電力最適化設定のいずれかを選択するだけで済みます。この値は、位置情報サービスのメイン クラス GeoCoordinateWatcher を初期化するときに設定できます。

GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);

適切な移動しきい値を設定する

モバイル デバイス内の GPS ハードウェアにはアンテナがないため、通常はセンサーが非常に高感度に設計されています。この感度が原因で、地表反射などの環境効果からのシグナルに多少のノイズが発生する可能性があります。位置情報サービスのメイン クラス GeoCoordinateWatcher は、MovementThreshold プロパティを公開します。このプロパティは、PositionChanged イベントが発生する前に実行する必要がある最小限の位置の変更を指定します。MovementThreshold プロパティを非常に小さい値に設定した場合、アプリケーションは、実際にはシグナルのノイズが原因で発生したイベントを受け取る可能性があります。意味のある位置の変更のみを表すようにシグナルを改善するには、MovementThreshold プロパティを 20 メートル以上に設定します。これにより、アプリケーションでの電力消費量も小さくなります。 移動しきい値を 0 メートルに設定すると、1 秒間に 1 回の頻度でイベントが発生します。この設定は、ナビゲーション アプリケーションには有用である場合があります。

位置データを使用できない場合の計画

位置情報サービスは、複数のソースを使用してデバイスの位置を判断しますが、それでも位置データを使用できない場合があります。アプリケーションは、このようなデータのない状況に適切に対処する必要があります。StatusChanged イベントは、位置情報サービスの状態が変化するたびに発生します。アプリケーションは、このイベントのハンドラーを使用して、位置データを使用できるかどうかをユーザーに通知したり、それに応じてアプリケーションの動作を変更したりできます。

位置情報サービスが位置データを取得できる場合でも、最初の読み込みを初期化して取得するのに通常は 15 秒かかり、最大 120 秒かかる場合もあります。アプリケーションは、このことを考慮して設計する必要があり、サービスの開始まで待機する間にアプリケーションが応答しなくなった場合にユーザーに警告する必要があります。低精度設定は GPS がデータを返すまで待機しないため、GPS が既にアクティブ化されていない場合、通常は動作が速くなります。他のアプリケーションが GPS を使用しており、既にデータを取得している場合、高精度設定は低精度設定と同じか、またはそれ以上の速度でデータを返します。

表示: