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

Windows Phone の位置のプログラミングのベスト プラクティス

2012/02/09

このトピックでは、位置情報サービスを使用する 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 を使用しており、既にデータを取得している場合は、高精度設定でも低精度設定と同程度かそれより速くデータを返します。

表示:
© 2014 Microsoft