我正在尝试在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;
}
}
我在我的应用中启动模拟器。之后,我在其他工具中选择了一些位置。选择位置后,单击应用程序中的按钮,将运行periodictask。 首先:调用StatusChanged,状态为“Initializing”。第二:调用StatusChanged,状态为“NoData”。我不知道为什么,因为我在其他工具中选择了位置。
答案 0 :(得分:0)
这不是真的,你可以通过为GeoCoordinateWatcher.DesiredAccuracy属性指定GeoPositionAccuracy.High获得实时GPS位置。但这会耗尽你的电池。
即使在正常设置下,您也应该能够获得几乎实时的位置。