0

GPS データをサーバーに 30 分ごとに送信する Windows Phone アプリケーションを開発し、それをバックグラウンド アプリケーションとして設定しました (アプリケーションが閉じていても GPS データを送信するため)。しかし、ここに問題があります。私のアプリは動作し、GPS データを送信しますが、データが正しくありません。この例を見てください:

time  |  Coordinate      |  Application State        |         Description

8:0   |  30.0 : 40:0     |      IS Running           |           Correct
8:31  |  31.0 : 40:0     |      IS Running           |           Correct 

Now I close the application in 8:35

9:10  |  31.0 : 40:0     |        Closed             |          Invalid
9:31  |  31.0 : 40:0     |        Closed             |          Invalid
10:0  |  31.0 : 40:0     |        Closed             |          Invalid

Now I start my application  10:10

10:31 |  115.0 : 67:0    |      IS Running           |           Correct
11:1  |  114.0 : 69:0    |      IS Running           |           Correct

Now I close the application in 11:15

11:31  |  114.0 : 69:0   |        Closed             |          Invalid
12:01  |  114.0 : 69:0   |        Closed             |          Invalid

ご覧のとおり、アプリケーションが閉じられると、アプリケーションが閉じられたときにアプリケーションが実行されてから最後の座標が送信されます。

私は英語が初めてなので、この方法を使用して問題を説明しているので、お詫び申し上げます。

(コーディネートは全てサンプルです)

ありがとう

アリ・フォーロイ

4

1 に答える 1

1

提供したサンプルデータの何が問題になっているのかを正確に判断するのは難しいですが、アプリケーションを閉じることについて話していることを考えると、 (aまたはaのScheduledTaskAgentいずれか)を使用していると推測します。スケジュールされたタスクで使用するための注目すべきAPIを見ると、から使用された場合のクラスが必ずしもライブGPSハードウェアデータを使用していないことがわかります。代わりに、データは15分ごとに更新されるOSキャッシュから取得されます。これは、GPSハードウェアが過去15分間にフォアグラウンドアプリケーションによってアクセスされなかった場合、OSがキャッシュを粗粒度の位置データ(WiFiアクセスポイント/セルタワーデータなど)で更新することを意味します。そのようにあなたのPeriodicTaskResourceIntensiveTaskGeoCoordinateWatcherScheduledTaskAgentScheduledTaskAgent最終的にこのデータを使用すると、GPSデータが不正確になる可能性があります。これには、エンドユーザーから報告される動きがほとんど含まれない場合があります。HorizontalAccurancyまたはVerticalAccuracyからGeoCoordinate返されたを送信するとGeoCoordinateWatcher、アプリケーションの実行中はこれらの数値が非常に低くなり(ユーザーによって異なりますMovementThreshold) 、アプリケーションが実行中の場合はScheduledTaskAgentこれらの数値がはるかに高くなることがわかります。

于 2012-05-07T07:22:12.770 に答える