如果我理解,我想问你。当我在BackgroundAgent的方法OnInvoke中创建GeoCoordinateWathcer时,如下所示:
protected override void OnInvoke(ScheduledTask task)
{
_watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High)
{
MovementThreshold = 100
};
_watcher.PositionChanged += PositionChanged;
_watcher.Start();
}
我移动超过100米并且将调用Task,因此PositionChanged不记得我之前的位置。这是真的吗?然后PositionChanged事件在BackgroundAgent中没有意义,或者?如果我想每100米升级我的位置,我必须保存以前的位置并使用例如前一个和当前位置的Haversine公式计算距离? 谢谢你。
答案 0 :(得分:0)
我认为你提到的情况是你不应该担心的重要事项。
GeoCoordinateWatcher
对后台代理的使用有更严重的限制。
Unsupported APIs for background agents for Windows Phone
的 GeoCoordinateWatcher 强> 的
此API用于获取设备的地理坐标, 支持在后台代理中使用,但它使用缓存 位置值而不是实时数据。缓存的位置值 设备每15分钟更新一次。
在Windows Phone 8中,您可以在后台运行位置跟踪应用程序以绕过该限制:Running location-tracking apps in the background for Windows Phone 8,但是,它不适用于Windows Phone 7.5。