est-il possible de vérifier si les services de localisation sont actifs? P>
Je veux dire Paramètres> Emplacement> Services de localisation P>
Il n'y a probablement aucune API directe pour appeler, mais cela pourrait-il fonctionner avec le géocœurwatcher? P>
5 Réponses :
Vous pouvez utiliser le code suivant pour déterminer l'état du service de localisation:
var watcher = new GeoCoordinateWatcher(); if (GeoPositionStatus.Disabled == watcher.Status) { // Watcher is disabled. }
Vous devrez peut-être réellement appeler start () code> sur l'observateur d'abord et regarder les modifications de statut (c'est pourquoi je vous ai donné des liens pour une lecture supplémentaire). Si vous exécutez sur l'émulateur, vous obtiendrez presque certainement le statut code> nodata code> tout le temps, qui est une autre bonne raison pour utiliser l'émulateur GPS Windows Phone, qui enveloppe les services de localisation.
Même avec le commencement s'il renvoie Geocoordinatewatcher Code> Vous obtiendrez
nodata code> si le capteur est désactivé. Ce que vous devriez essayer d'utiliser à la place, c'est essai:
false code>, cela signifie que le capteur est désactivé. S'il renvoie
true code>, il est activé. Définissez une période de délai d'attente appropriée (dans l'extrait ci-dessus, j'utilise 30 secondes) et déléguez ce processus à un fil secondaire, il ne pend pas de l'interface utilisateur. P> P>
FAIT FUN: Dans mon application à l'aide de TryStart avec l'emplacement désactivé causé la demande de crash, alors oui ...
Vous pouvez ajouter un événement StatusChanged à votre géocoordinatedwatcher et tester la géoposition de la géoposition.
GeoCoordinateWatcher g = new GeoCoordinateWatcher(); g.Start(); if (g.Permission.Equals(GeoPositionPermission.Granted)) { //Your location services is enabled. Go ahead. //Your codes goes here. } else if (g.Permission.Equals(GeoPositionPermission.Denied) || g.Permission.Equals(GeoPositionPermission.Unknown)) { MessageBox.Show("Location services are disabled. To enable them, Goto Settings - Location - Enable Location Services.", "Location services", MessageBoxButton.OK); }
Cela a continué de retourner inconnu pour moi, la réponse de Chris R a fourni le statut correct.