即使应用被暂停,UWP位置也会跟踪

时间:2015-11-06 06:55:03

标签: c# uwp

我正在开发一个运行UWP的应用程序,我想实时记录用户的位置。我已经阅读了很多线程扔谷歌,并获得了一些解决方案:ExtendedExecutionSession app service。但是这两个解决方案存在同样的问题:无法在应用程序暂停时记录位置。我知道uwp中的后台任务,似乎需要一个触发器(例如SystemTrigger)才能启动。当应用程序暂停以跟踪/记录位置时,是否可以启动(不使用触发器但直接调用)自定义后台任务?

1 个答案:

答案 0 :(得分:1)

首先,我想回答你的问题:

  

是否可以启动(不要使用触发器,而是直接调用)a   应用程序暂停以跟踪/记录位置时的自定义后台任务?

是的,您可以使用ApplicationTrigger类执行此操作。见https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.background.applicationtrigger (它仍然是一个触发器,因为API需要它,但它基本上直接从应用程序调用backgroundtask)

但是这里有一些用于进行位置跟踪和这些事情的示例: https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Geolocation

我认为您正在寻找的是LocationTrigger(参见:https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.background.locationtrigger) 它用于Geofence示例(Scenario5_GeofenceBackgroundTask.xaml.cs)

基本上你这样注册:(来自示例代码)

BackgroundTaskBuilder geofenceTaskBuilder = new BackgroundTaskBuilder();
geofenceTaskBuilder.Name = SampleBackgroundTaskName;
geofenceTaskBuilder.TaskEntryPoint = SampleBackgroundTaskEntryPoint;

var trigger = new LocationTrigger(LocationTriggerType.Geofence);

geofenceTaskBuilder.SetTrigger(trigger);


_geofenceTask = geofenceTaskBuilder.Register();
//...and do the rest (but look into the sample..everything is from there...)