2012-05-07 50 views
0

我开发了一个windows phone应用程序,每隔30分钟向我的服务器发送一次GPS数据,并将其设置为后台应用程序(即使我的应用程序已关闭,也会发送GPS数据)。但这里有一个问题,我的应用程序工作并向我发送GPS数据,但数据不正确。看看下面这个例子:windows phone 7中无效的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 

,你看,当应用程序被关闭其发送的最后一个坐标,因为当它关闭我的应用程序正在运行。

因为我是英语新手,我用这种方式解释我的问题,所以对此表示歉意 任何想法都可能有帮助。

(坐标都是样品)

感谢

阿里Foroughi

+1

也许这是有帮助的:http://stackoverflow.com/questions/6952413/how-can-i-run-my-gps-application-in-background –

回答

1

这很难说,究竟什么是错的,你所提供但考虑到你说的样本数据关于关闭你的应用程序,我假设你正在使用ScheduledTaskAgentPeriodicTaskResourceIntensiveTask)。如果您查看Noteworthy APIs for Use with Scheduled Tasks,您会看到GeoCoordinateWatcher类在使用ScheduledTaskAgent时不一定使用实时GPS硬件数据。相反,数据来自每隔15分钟更新一次的操作系统缓存。这意味着如果GPS硬件在过去的15分钟内没有被前台应用程序访问,操作系统将使用粗粒度位置数据(例如,从WiFi接入点/手机信号塔数据)更新缓存。因此,如果您的ScheduledTaskAgent最终使用此数据,您可能会发现您获得的GPS数据不准确 - 这包括最终用户报告的移动很少。如果通过GeoCoordinateWatcher返回的GeoCoordinateHorizontalAccurancyVerticalAccuracy发送,您可能会看到在应用程序运行时,这些数字非常小(取决于您的MovementThreshold),并且当它在ScheduledTaskAgent下运行时,这些数字会高得多。

相关问题