2013-03-10 6 views
3

j'ai un seul appareil (HTC HD Deside) pour tester mes applications et quand je veux obtenir des données GPS avecrequestLocationUpdate prend trop de temps

locationManager.requestLocationUpdate(criteria,0,0,this); //critera = "gps" 

icône GPS apparaît dans la barre de notification, mais il « clignote » , comme si cela signifiait que mon appareil recherche et obtient les données GPS. En conséquence, mes applications prennent trop de temps de "réflexion" avant d'obtenir des données GPS (~ 1mn à 3mn!) (Avant que l'icône ne clignote)

Donc, je suis obligé de créer une instruction while comme ceci:

do{ 
    lastLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
}while(System.currentTimeMillis() - lastLocation.getTime() > 5000); 

Merci, je suis sûr d'obtenir un emplacement récemment, mais j'ai perdu trop de temps.

Quel est le problème? Est-ce le matériel? Puis-je trouver un meilleur moyen de résoudre ce problème? Puis-je obtenir "rapidement" les données GPS? :/(1 ~ 5 sec)

+0

Avez-vous besoin de la granularité plus fine de GPS ou pourriez-vous vous débrouiller avec un autre fournisseur? –

+0

J'ai besoin d'utiliser le GPS car mon application sera utilisée dans un endroit sans wifi/internet ^^ Donc, je dois utiliser le GPS (le seul moyen d'obtenir des données latitude/longitude/altitude n'importe où?) – user2137454

+0

Vous n'avez pas besoin d'attendre (ou sondage) pour le dernier emplacement connu. L'écouteur d'emplacement sera appelé dès qu'un correctif est disponible. Le dernier emplacement connu peut être utile si un correctif est disponible à partir d'une demande GPS antérieure. Si aucun n'est disponible, null est retourné (ce qui, d'ailleurs, ferait planter votre boucle). – Stefan

Répondre

0

Le capteur GPS peut prendre plus de temps lorsque vous vous trouvez dans un bâtiment ou dans une zone couverte. Parfois, si vous êtes à l'intérieur d'un bâtiment et qu'aucun signal GPS n'est disponible, il clignote et vide la batterie. Essayez d'utiliser un autre fournisseur.

2

Je pense que vous devriez lire ce guide http://developer.android.com/guide/topics/location/strategies.html avant de développer une application de localisation.

Le capteur GPS a besoin de 1 à 3 minutes pour obtenir un correctif, vous ne pouvez pas avoir une solution très rapide (1-5 secondes comme vous voulez).

Vous devez utiliser la dernière valeur d'emplacement connue et commencer à demander des correctifs d'emplacement. Lorsque vous en avez un, vous actualisez votre contenu en conséquence.

0

Êtes-vous connecté à un réseau de données?

Je ne sais pas à propos de HTC, mais généralement quand une connexion de données est disponible, l'appareil utilise quelque chose appelé GPS assisté. Au lieu de scanner tout le satellite visible à l'horizon, les éphémérides du satellite sont téléchargées à partir des serveurs et le temps nécessaire pour obtenir une correction est de 10 à 20 secondes.

Il est également possible que vous soyez à l'intérieur ou dans une zone de faible signal ou si vous avez une mauvaise antenne.

Utilisez l'application de test GPS du marché pour vérifier si l'antenne a un problème (en comparant deux appareils).

+0

Oui, je l'ai fait! et le problème est le même. Alors ... comme vous l'avez dit, le problème est une zone de faible signal je pense. – user2137454