Я делаю приложение для Windows Phone, которое отображает, где находятся ближайшие автобусные станции (помимо прочего). Для Windows Phone требуются приложения, позволяющие пользователям отключать службы определения местоположения в приложении.
Итак, я добавил переключатель на странице настроек, но он, похоже, ничего не делает.
Вот модель представления, в которой я объявил наблюдателя геокоординаты.
public MainViewModel()
{
geoWatcher = new GeoCoordinateWatcher();
if (geoWatcher.TryStart(false, TimeSpan.FromSeconds(30) )==false )
{ MessageBox.Show("The location services are disabled for this app. We can't detect the nearby stops. To turn location services back on, go to the settings page.", "Warning", MessageBoxButton.OK); }
}
private GeoCoordinateWatcher geoWatcher;
public GeoCoordinateWatcher GeoWatcher
{
get
{
return geoWatcher;
}
set
{
if (geoWatcher != value)
{
geoWatcher = value;
NotifyPropertyChanged("GeoWatcher");
}
if(geoWatcher.Status== GeoPositionStatus.Disabled)
{
geoWatcher.Stop();
}
}
}
и вот основная часть страницы настроек
public SettingsPage()
{
InitializeComponent();
if (App.ViewModel.GeoWatcher.Status == GeoPositionStatus.Ready)
{
locToggle.IsChecked = true;
locToggle.Content = "On";
}
else
{
locToggle.IsChecked = false;
locToggle.Content = "Off";
}
}
private void toggleChecked(object sender, RoutedEventArgs e)
{
locToggle.Content = "On";
App.ViewModel.GeoWatcher.Start();
MessageBox.Show("this is the status " + App.ViewModel.GeoWatcher.Status.ToString(), "Info", MessageBoxButton.OK); //for debugging
}
private void toggleUnchecked(object sender, RoutedEventArgs e)
{
locToggle.Content = "Off";
App.ViewModel.GeoWatcher.Stop();
MessageBox.Show("this is the status " + App.ViewModel.GeoWatcher.Status.ToString(), "Info", MessageBoxButton.OK); //for debugging
}
Когда я выключаю тумблер, щелкаю на странице настроек и возвращаюсь к ней, тумблер снова включается.
Я попытался добавить в окно сообщения функции для отладки, но в статусе всегда указано «Готово», и мое приложение по-прежнему использует службы определения местоположения, даже когда я переключаю переключатель в положение «Выкл.
Есть ли что-то, что я должен добавить к коду, чтобы тумблер должным образом заставил мое приложение прекратить использовать службы определения местоположения в моем приложении, если оно отключено на странице настроек? Или я должен проверять что-то еще, кроме GeoPositionStatus? Я не мог найти способ заставить мое приложение действительно изменять разрешения служб определения местоположения или PositionStatus.
Я посмотрел на эту страницу здесь , но все еще растерялся, поскольку следовал примеру внизу страницы, но безрезультатно. Я искал StackOverflow, но я не мог найти похожий вопрос с WP. Я также опубликовал это на форумах AppHub.
Спасибо!