0

我开发了一个 windows phone 应用程序,它每 30 分钟向我的服务器发送 GPS 数据,并将其设置为后台应用程序(即使我的应用程序关闭也可以发送 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 ScheduledTaskAgent(aPeriodicTask或 a ResourceIntensiveTask)。如果您查看Noteworthy APIs for Use with Scheduled Tasks,您会发现GeoCoordinateWatcher从 a 使用的类ScheduledTaskAgent不一定使用实时 GPS 硬件数据。相反,数据来自每 15 分钟更新一次的操作系统缓存。这意味着如果 GPS 硬件在过去 15 分钟内没有被前台应用程序访问,那么操作系统将使用粗粒度的位置数据(例如来自 WiFi 接入点/蜂窝塔数据)更新缓存。因此,如果您的ScheduledTaskAgent最终使用这些数据,您可能会发现 GPS 数据不准确 - 这将包括最终用户报告的非常少的移动。如果您通过返回的HorizontalAccurancyor发送VerticalAccuracy,您可能会看到,在应用程序运行时,这些数字非常低(取决于您的),而当它在您的环境下运行时,这些数字会高得多。GeoCoordinateGeoCoordinateWatcherMovementThresholdScheduledTaskAgent

于 2012-05-07T07:22:12.770 回答