2013-07-24 15 views
11

Je dois programmer Android à partir d'autres plates-formes que j'ai utilisé avec le GPS. sur les autres platfroms j'avais accès au GPS HW (j'avais un pilote GPS de bas niveau) et par là je pouvais obtenir des mises à jour GPS 5 fois par seconde et encore plus Maintenant je travaille avec le Samsung Galaxy S2 (ce qui est clair pour moi que son GPS est très forte et peut fournir plusieurs mises à jour par seconde Actuellement quand je mis le fournisseur de GPS pour fournir des mises à jour à distance minimale et un minimum de temps comme celui-ci:obtenir le plus haut taux de mise à jour GPS à partir du matériel GPS dans mon Android

mlocManager.requestLocationUpdates( 
    LocationManager.GPS_PROVIDER, 0, 0, mlocListener 
); 

Je reçois 1 mise à jour par seconde (ou 800ms comme Est-il possible de forcer le GPS HW à signaler plus de mises à jour? Je suppose qu'il n'est pas exposé à l'utilisateur, mais est-il toujours possible d'accéder aux registres de GPS HW en quelque sorte?

+0

Je doute que vous pouvez obtenir plus de 1hz. En outre, je doute que votre application ne peut pas fonctionner avec Intervalles 1, Qu'en est-il interpolant? – AlexWien

+0

J'ai un autre GPS Bluetooth de QStarz qui fera 10hz. – user2613743

+0

En effet, l'interpolation est une solution. J'essaie de suivre l'emplacement d'une voiture, donc 1 seconde dans 100kmh est ~ 30 mètres et j'ai besoin d'une meilleure granularité. aussi, je voudrais savoir (si n'importe quel corps sait ici) quel est le retard du calcul GPS. Je veux dire, quand il rapporte l'emplacement, combien de temps est passé depuis le point où nous étions à cet endroit. cela nécessite également une interpolation pour comprendre où nous sommes maintenant par exemple. Donc, si c'est aussi dans la zone de 1 seconde ou une demi-seconde, donc nous devons interpoler 2 secondes pour où nous sommes maintenant et c'est vraiment mauvais pour moi. – user2610687

Répondre

3

Actuellement, vous ne pouvez pas obtenir des mises à jour plus rapidement qu'une fois par seconde sur la plupart du téléphone. Il s'agit de la limite du matériel.

Habituellement dans la plupart des téléphones, il est à 1hz.

Tout dépend du matériel et scénario dans lequel vous utilisez (intérieur, extérieur)

Mais encore une fois, vous pouvez vérifier à l'aide

LocationRequest setFastestInterval (long millis) 

Cela permet à votre application d'acquérir passivement des emplacements à un rythme plus rapide qu'elle acquiert activement des emplacements, économisant de l'énergie.

Contrairement à setInterval (long), ce paramètre est exact. Votre application ne recevra jamais de mises à jour plus rapidement que cette valeur.

Cette méthode définit le taux le plus élevé en millisecondes auquel votre application peut gérer les mises à jour de position. Vous devez définir ce taux car d'autres applications affectent également la fréquence à laquelle les mises à jour sont envoyées. Les services de localisation envoient les mises à jour au taux le plus élevé demandé par n'importe quelle application en appelant LocationRequest.setInterval().

Si ce taux est plus élevé que ce que votre application peut gérer, vous risquez de rencontrer des problèmes avec le scintillement de l'interface utilisateur ou le débordement de données.

+0

pourriez-vous poster un lien vers la ressource où vous avez obtenu les informations sur la limite matérielle gps? –