2010-07-25 7 views
3

J'ai réussi à obtenir des données GPS via les méthodes registerLocationListener() et onLocationChanged(). Le seul problème avec ceci est que la lecture rapide de mon application se bloque s'il n'y a plus de données GPS (par exemple quand je vais à l'intérieur, entrer dans un tunnel, etc.). Le comportement que je veux pour mon application est que l'utilisateur est en quelque sorte notifié que la vitesse de lecture n'est probablement pas précise en raison d'un manque de données récentes (mettre la vitesse à zéro, clignoter la lecture de la vitesse, etc.).Vérifiez périodiquement si le GPS a de nouvelles données.

Comment puis-je faire cela? Je pensais vérifier périodiquement si l'unité GPS détectait des satellites, mais je ne sais pas comment forcer des vérifications périodiques.

+0

Peut-être que vous pourriez utiliser un GpsStatus.Listener, bien que j'ai rencontré quelques problèmes avec lui (voir mon article http://stackoverflow.com/questions/3287389/gpsstatuslistener-no-satellites-used-in-fix-although-status -is-gpsstatus-gps-veille). Récemment j'ai fait face à une tâche similaire, ce qui explique pourquoi je suis en train d'exécuter deux requestLocationUpdates avec un gps_provider et un network_provider en même temps. –

Répondre

3

Peut-être que vous pourriez simplement commencer une minuterie périodique. Si la minuterie voit que la dernière position GPS est ancienne, elle affiche une notification. L'application doit se souvenir du dernier correctif.

+0

C'est à peu près ce que j'ai fini par faire après une tentative infructueuse d'utiliser GpsStatus.getSatellites() et GpsSatellite.usedInFix(). Chaque fois que j'obtiens un nouvel objet Location dans mon LocationListener, je place un horodatage avec System.currentTimeMillis() et ensuite compare l'heure chaque fois que je reçois une mise à jour dans mon GpsStatus.Listener. C'est primitif, mais jusqu'à présent, c'est la seule solution que j'ai trouvée qui fonctionne ... – Chris

Questions connexes