2015-12-17 4 views
1

Мне нужно сделать приложение на телефоне Windows 8.1, которое обновляет мое местоположение каждые 15 минут в фоновом задании.Windows phone 8.1 отслеживание местоположения фона

Задача должна работать, даже если пользователь присутствует или нет. Как я могу это сделать?

Я только что создал BackgroundTask, и я зарегистрирую его с помощью TimeTrigger, но он не работает.

Это мой метод регистра:

var access = await BackgroundExecutionManager.RequestAccessAsync(); 
BackgroundTaskBuilder builder = new BackgroundTaskBuilder(); 
IBackgroundTrigger trigger = new TimeTrigger(15, false); 
builder.Name = "BackgroundTask"; 
builder.SetTrigger(trigger); 
builder.TaskEntryPoint = typeof(LocationTask).FullName; 
BackgroundTaskRegistration register = builder.Register(); 

И это мой LocationTask:

public sealed class LocationTask : IBackgroundTask 
{ 
    public async void Run(IBackgroundTaskInstance taskInstance) 
    { 
     try 
     { 
      Geolocator geolocator = new Geolocator(); 
      Geoposition geoposition = await geolocator.GetGeopositionAsync(); 
      Risorse.lat = Math.Round(geoposition.Coordinate.Point.Position.Latitude, 6); 
      Risorse.lon = Math.Round(geoposition.Coordinate.Point.Position.Longitude, 6); 
      DrupalBridge db = new DrupalBridge("http://interventi.computerhalley.it", "/rest", Risorse.utente, Risorse.lat.ToString().Replace(',', '.'), Risorse.lon.ToString().Replace(',', '.')); 
      db.postCoordinate(); 
     } 
     catch (Exception ex) 
     { 
      if ((uint)ex.HResult == 0x80004004) 
      { 
       MessageDialog messaggio = new MessageDialog("GPS disattivato...l'applicazione verrà chiusa...\r\nRiavviarla dopo aver attivato la geolocalizzazione"); 
       await messaggio.ShowAsync(); 
       Application.Current.Exit(); 
       //await Windows.System.Launcher.LaunchUriAsync(new Uri("ms - impostazioni - posizione")); 
      } 
      else 
      { 
       MessageDialog messaggio = new MessageDialog("Errore imprevisto\r\nriavviare l'applicazione..."); 
       await messaggio.ShowAsync(); 
       Application.Current.Exit(); 
       // something else happened acquring the location 
      } 
     } 
    } 
} 

ответ

1

Я предполагаю, что вы получаете исключение со значением 15 введенными.

Тем не менее, в телефоне Windows 8.1 время триггера составляет не менее 30 минут, а приложения для хранения окон - минимум 15 минут.

Смежные вопросы