【发布时间】:2014-11-15 10:47:51
【问题描述】:
首先我要声明的是,我正在创建的应用程序是 Windows Phone 8.1 RT Store 应用程序(不是 Silverlight 应用程序)
我目前正在创建一个应用程序,作为我作为团队成员的大学最后一年项目的一部分。我遇到的问题是,对于应用程序的一部分,我需要能够在地图上记录一个区域。 IE。用户在特定区域走动,我们存储该区域以供应用程序的其他部分使用。
我目前能够使用 GPS 记录位置,并能够在地图上准确显示。导致我出现问题的区域是需要解锁屏幕并打开屏幕才能正常工作。一旦手机锁定应用程序(显然)暂停并且我无法记录位置。
我一直在网上查找,发现之前允许应用程序在锁定屏幕后运行的方法已在 Windows Phone 8.1 中被删除,所以我的问题是,有没有人找到其他方法?
这是我目前拥有的代码。我使用调度计时器每 20 秒记录一次 GPS,然后将该位置添加到我拥有的列表中。
代码:
public void getLoc()
{
Debug.WriteLine("Start");
startButtonEnabled = false;
stopButtonEnabled = true;
FindGPS();
dispatcherTimer.Tick += FindGPS_Event;
dispatcherTimer.Interval = new TimeSpan(0, 0, 20);
dispatcherTimer.Start();
}
private void FindGPS_Event(object sender, object o)
{
FindGPS();
}
private async Task FindGPS()
{
Debug.WriteLine("Find GPS");
try
{
Geoposition position = await geolocator.GetGeopositionAsync();
location.Longitude = position.Coordinate.Point.Position.Longitude;
location.Latitude = position.Coordinate.Point.Position.Latitude;
location.Accuracy = position.Coordinate.Accuracy;
location.GeoLocation =
new Geopoint(new BasicGeoposition() {Latitude = location.Latitude, Longitude = location.Longitude});
zoomLevel = 18;
}
catch (UnauthorizedAccessException)
{
Debug.WriteLine("No Data");
}
catch (TaskCanceledException)
{
Debug.WriteLine("Cancelled");
}
finally
{
Pushpin icon = new Pushpin()
{
Point =
new Geopoint(new BasicGeoposition()
{
Latitude = location.Latitude,
Longitude = location.Longitude
}),
Name = "Location"
};
location.IconOnMap.Add(icon);
}
}
getLoc 在按下按钮时被调用,我还有另一个按钮可以停止dispatchTimer。需要计时器,但目前为测试目的设置了时间范围。
【问题讨论】:
标签: c# timer gps windows-phone-8.1 lockscreen