1

我想问你,如果我明白的话。当我在 BackgroundAgent 的 OnInvoke 方法中创建 GeoCoordinateWathcer 时,如下所示:

protected override void OnInvoke(ScheduledTask task)
{
    _watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High)
                   {
                       MovementThreshold = 100
                   };
    _watcher.PositionChanged += PositionChanged;
    _watcher.Start();
}

我移动超过 100m 并且将调用 Task,所以 PositionChanged 不记得我以前的位置。是真的吗?那么PositionChanged事件在BackgroundAgent中没有意义,还是?如果我想每 100m 升级一次我的位置,我必须保存以前的位置并使用例如从以前和当前位置的 Haversine 公式计算距离?谢啦。

4

1 回答 1

0

我认为你提到的情况是你应该担心的不太重要的事情。

GeoCoordinateWatcher对后台代理的使用有更严重的限制。

Windows Phone 后台代理不支持的 API

地理坐标观察器

此 API 用于获取设备的地理坐标,支持在后台代理中使用,但它使用缓存的位置值而不是实时数据。缓存的位置值由设备每 15 分钟更新一次。

在 Windows Phone 8 中,您可以在后台运行位置跟踪应用程序以绕过该限制:在 Windows Phone 8 的后台运行位置跟踪应用程序,但是,它不适用于 Windows Phone 7.5。

于 2013-04-07T12:55:50.703 回答