我们正在开发一个使用vs2012的跟踪应用程序,目标是Windows 8.1。
我们正在使用GeoCoordinateWatcher类。由于某种原因,如果第一个修复是来自wifi,然后你关闭wifi,应用程序无法获得卫星修复(观察者状态一直返回没有数据)。它只能看到wifi的位置
如果第一个修复是来自GPS卫星,似乎会出现相同的问题。
不确定这是硬件问题还是软件问题…但是我需要观察者根据可用性使用两个源。
感谢您对这个问题的建议。
下面是负责捕获GPS的部分代码。它在一个计时器上被调用,每XX工作一次。
private string SendingData()
{
try
{
DataXML = "";
string result = "";
Write_Trace_File("SendingData: Watcher Status: " + watcher.Status.ToString());
if (watcher.Status != GeoPositionStatus.Ready)
{
try
{
watcher.TryStart(true,TimeSpan.FromSeconds(10));
}
catch (Exception exp)
{
Write_Trace_File(exp.Message);
}
}
string cur_long = "";
string cur_lat = "";
string cur_speed = "";
if (watcher.Position.Location.IsUnknown)
{
Write_Trace_File("SendingData: GPS not captured yet.");
if (currlatitude.ToString() != "0.0" && currlatitude.ToString() != "" && currlatitude.ToString() != "0")
{
Write_Trace_File("SendingData:Using Cached GPS.GPS last captured at" + lastPosDate);
cur_long = currlongtitude.ToString();
cur_lat = currlatitude.ToString();
if (speed.ToString() != "0")
{
cur_speed = speed.ToString();
}
}
else
{
Write_Trace_File("SendingData:No Cached GPS.");
return "";
}
}
else
{
Write_Trace_File("SendingData:Using Captured GPS.");
cur_long = watcher.Position.Location.Longitude.ToString();
cur_lat = watcher.Position.Location.Latitude.ToString();
cur_speed = watcher.Position.Location.Speed.ToString();
}
}
你有没有试过打电话给
GeoCoordinateWatcher.Close()
和
GeoCoordinateWatcher.Start()
方法,看看这是否会使它重新启动?
参考:https://msdn.microsoft.com/en-us/library/system.device.location.geocoordinatewatcher_methods (v = vs.110) . aspx