1

我正在尝试在 BackgroundWorker 中获取 GPS 位置。我读到,数据是从缓存中获取的,这些缓存每 15 分钟更新一次。是否可以重新安排缓存的更新间隔?现在我正在使用模拟器,并且我总是在事件 StatusChanged 中获得 NoData。

好的,你能解释一下,它是如何在模拟器中工作的吗?这是我的代码:

private GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);

    private void StartGeoWatcher()
    {
        watcher.StatusChanged += GeoWatcherStatusChanged;
        watcher.PositionChanged += GeoWatcherPositionChanged;
        watcher.Start();
    }

    void GeoWatcherPositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
    {

    }

    void GeoWatcherStatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
    {
        switch (e.Status)
        {
                case GeoPositionStatus.Initializing:
                    break;
                case GeoPositionStatus.Ready:
                    break;
                case GeoPositionStatus.NoData:
                    break;
                case GeoPositionStatus.Disabled:
                    break;
        }

    }

我在我的应用程序中启动模拟器。之后,我在附加工具中选择了一些位置。选择位置后,单击应用程序中的按钮,周期性任务将运行。首先: StatusChanged 被调用,状态为“正在初始化”。第二:以状态“NoData”调用 StatusChanged。我不知道为什么,因为我在其他工具中选择了位置。

4

1 回答 1

0

这不是真的,您可以通过为GeoCoordinateWatcher.DesiredAccuracy属性指定 GeoPositionAccuracy.High 来获取实时 GPS 位置。但这会耗尽你的电池。

即使在正常设置下,您也应该能够获得几乎实时的位置。

于 2013-03-05T19:39:53.453 回答