7
votes

Est-il possible de vérifier si les services de localisation sont actifs?

est-il possible de vérifier si les services de localisation sont actifs?

Je veux dire Paramètres> Emplacement> Services de localisation

Il n'y a probablement aucune API directe pour appeler, mais cela pourrait-il fonctionner avec le géocœurwatcher?


0 commentaires

5 Réponses :


3
votes

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.
}


1 commentaires

Vous devrez peut-être réellement appeler start () 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 nodata tout le temps, qui est une autre bonne raison pour utiliser l'émulateur GPS Windows Phone, qui enveloppe les services de localisation.



3
votes

Même avec le commencement Geocoordinatewatcher Vous obtiendrez nodata si le capteur est désactivé. Ce que vous devriez essayer d'utiliser à la place, c'est essai: xxx

s'il renvoie false , cela signifie que le capteur est désactivé. S'il renvoie true , 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.


1 commentaires

FAIT FUN: Dans mon application à l'aide de TryStart avec l'emplacement désactivé causé la demande de crash, alors oui ...



2
votes

Vous pouvez ajouter un événement StatusChanged à votre géocoordinatedwatcher et tester la géoposition de la géoposition.


0 commentaires

4
votes
            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);
            }

1 commentaires

Cela a continué de retourner inconnu pour moi, la réponse de Chris R a fourni le statut correct.



0
votes

a fait celui-ci basé sur 's Réponse .

public override void OnNavigatedTo()
    {            
        using (var watcher = new GeoCoordinateWatcher())
        {
            try
            {
                watcher.Start();
            }
            finally
            {
                IsAllowedInSystem = watcher.Permission.Equals(GeoPositionPermission.Granted);
                watcher.Stop();
            }
        }
    }


0 commentaires