Мне нужно сделать приложение на телефоне 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
}
}
}
}