2015-11-06 72 views
1

我正在開發一個UWP正在運行的應用程序,並且我想要實時記錄用戶的位置。我讀過很多線程拋出谷歌,並獲得了一些解決方案:ExtendedExecutionSession,app service 。但是這兩個解決方案有一個相同的問題:無法記錄應用程序暫停時的位置。我知道uwp中的後臺任務,似乎需要一個觸發器(例如SystemTrigger)才能啓動。當應用程序暫停以跟蹤/記錄位置時,是否可以啓動(不要使用觸發器,而是直接調用)自定義後臺任務?即使應用程序被暫停,UWP位置跟蹤

回答

0

首先,我想回答你的問題:

是否有可能推出(不使用觸發器,但直接調用)一個 自定義背景任務時,應用程序被暫停追蹤/記錄的位置?

是的,你可以用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) 它在地理圍欄示例中使用(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...) 
+0

gregk,謝謝您的回答。我會嘗試ApplicationTrigger。 –

+0

我在你評論之後擴展了我的答案。我也會嘗試LocationTrigger。我不知道您的具體要求,但跟蹤的位置,這將是再次去.. – gregkalapos

+0

,我看到你的最新的答案,感謝的方式。我的確切要求是:即使在應用程序被暫停時,仍然繼續跟蹤/記錄用戶的當前位置。 –