Я разрабатываю мобильное приложение для Windows с использованием Windows 10 SDK (сборка 10586), и мне нужно подписаться на событие StatusChanged Geolocator.
Проблема в том, что когда я отключаю геолокацию с помощью меню «Настройки»> «Местоположение», мой метод OnStatusChanged не вызывается.
public async Task StartTracking()
{
// Request permission to access location
var accessStatus = await Geolocator.RequestAccessAsync();
switch (accessStatus)
{
case GeolocationAccessStatus.Allowed:
_geolocator = new Geolocator
{
ReportInterval = 2000,
MovementThreshold = 10d,
DesiredAccuracyInMeters = 10,
DesiredAccuracy = PositionAccuracy.High
};
_geolocator.PositionChanged += OnPositionChanged;
_geolocator.StatusChanged += OnStatusChanged;
break;
case GeolocationAccessStatus.Denied:
Messenger.Default.Send(new GeolocationDeniedAccessMessage(true));
break;
case GeolocationAccessStatus.Unspecified:
Messenger.Default.Send(new GeolocationDeniedAccessMessage(true));
break;
}
}
private void OnStatusChanged(Geolocator sender, StatusChangedEventArgs e)
{
switch (e.Status)
{
case PositionStatus.Ready:
Messenger.Default.Send(new GeolocationAvailabilityMessage(true));
Messenger.Default.Send(new GeolocationDeniedAccessMessage(false));
break;
case PositionStatus.Initializing:
break;
case PositionStatus.NoData:
Messenger.Default.Send(new GeolocationAvailabilityMessage(false));
break;
case PositionStatus.Disabled:
Messenger.Default.Send(new GeolocationDeniedAccessMessage(true));
break;
case PositionStatus.NotInitialized:
break;
case PositionStatus.NotAvailable:
Messenger.Default.Send(new GeolocationAvailabilityMessage(false));
break;
}
}