Mobile Clients for Location-Based Services

Slides:



Advertisements
Présentations similaires
Direct and Indirect Object Pronouns in French
Advertisements

Le gérondif Le participe présent.
Les pronoms compléments
Aire d’un parallélogramme

PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.
Grief de classification Classification Grievance.
Échanger connaissances et techniques sur les routes et le transport routier 1 The PIARC Website.
Les Pronoms Disjoints.
Séparation des préoccupations (c) 2004, Audrey Occello, LF8 MOC Seconde partie Un exemple de programmation orientée Aspect avec AspectJ.
Communications pour le Voyage détude à Strasbourg (29-31 mars 2009) / Information about the study trip to Strasbourg (29th-31st March 2009) Château de.
Les prépositions.
TROUVER LES FACTEURS PREMIERS
Jalane is coming to Windsor You will interview her, in French, for the school paper. Page 127 # 5 You will interview her, in French, for the school paper.
Les Questions Français I. YES or NO Questions There are 4 ways to form yes or no questions: 1. EST-CE QUE + SENTENCE Est-ce que tu aimes les hamburgers?
OTB Analog module: Input configuration with TSX PREMIUM (TSXCPP110)
Tout All you need to know. Weve learned possessive adjectives My in french is __________? Your in french is ___________? His/her/its in french is ________?
La formation des questions Reflect a bit… Reflect a bit… Pourquoi est-il important de poser les questions? Pourquoi est-il important de poser les questions?
Les verbes en -er. chanter – to singtelephoner – to call danser – to dancetravailler – to work diner – to have dinnervoyager –to travel ecouter – to listen.
La formation des questions Reflect a bit… Reflect a bit… Pourquoi est-il important de poser les questions? Pourquoi est-il important de poser les questions?
Direct and Indirect Object Pronouns in French
Les Sports avec Faire faire = to do, to make (also used with certain sports and weather expressions)
Time with minutes French II Le 30 Octobre.
WHAT/WHICH ONE? THIS ONE!. Review the forms of quel meaning what or which: MasculineFeminine Singular Plural.
TP2 ... MVC ? JList JLabel JSlider ImageLibrary Contrôleur Vue Modèle
What does en mean? The object pronoun en usually means some or of them.
Quest-ce que tu fais normalement en ville? What do you normally do in town? Tous les weekends je vais… Je vais normalement … Je vais souvent…. avec parce.
Mercredi, le 12 septembre. Allons enfants de la Patrie, Le jour de gloire est arrivé !
Click Cliquez. Welcome to the presentation of the new " S.E.R.T. VE Calculator " Bienvenue à la présentation du nouveau " S.E.R.T. VE Calculator " (S.
Y and en Two little words with a lot of meaning. y.
A. Roussanaly - Université Nancy2 AXIS Master MIAGE/SID – Université NANCY2.
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
Les pluriels Sometimes you cant just take one!. Les articles… There are « DEUX » articles that can show that something is plural. Les = the Les ciseaux,
Structures de données et algorithmes – TP2
En translates to some, any, of it, or of them.. Tu veux du yaourt? Non, merci, je nen veux pas.
Chapitre 1 Structure.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Les Adjectifs Interrogatifs
AFNOR NF Z – "Online Consumer Reviews
Seasons and Preferences Project French 1. Choose your favorite pass-time Je mappelle Madame Mac et Jaime apprendre les langues!
La grande révision de pronoms! Everything you should already know!
IAFACTORY | conseil en architecture de linformation | | |
La pratique factuelle Années 90 un concept médical visant à optimiser les décisions cliniques face aux soins des patients Aujourdhui un concept évolutif,
Follow the directions on each slide. If you finish early you may work on an assignment for another class.
Qu’est-ce que c’est? La Formation… Verbes en –er
1 CSI 2532 Lab5 Installation de JDBC Février 13, 2012.
Passage entre quaternions et matrice des cosinus directeurs Transition from Quaternions to Direction Cosine Matrices.
Cest mercredi le neuf octobre Le plan! 1.Révisions 2.Vocabulaire 3.Jouer 4.Ecouter 5.Parler Il fait beau! Le but! Les couleurs!
Finger Rhyme 6 Summer Term Module 6 Culturethèque-ifru2013 May not be copied for commercial purposes.
© Boardworks Ltd of 13 Year 10 View the following Powerpoint and complete the exercises in your exercise book.
Le Baromètre Zone Cours : un environnement pour la micro-évaluation de ressources pédagogiques* Jacques Raynauld Olivier Gerbé HEC Montréal, MATI Montréal.
Its shoere time you learned the conjugation of a stem-changing verb!
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes Usage.
A1. Révision: les pronoms le, la, les et lui, leur p. 162
Presenting the wonderful world of Pronouns.
Branche Développement Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire.
Comment est-ce qu’on pose une question en français
Notes les 8-9 octobre L’impératif (Command forms) Donne-lui ton crayon. (Give him your pencil.) Ne me parlez pas comme ça. (Don’t talk to me like that.)
Leçon 25.
When do we use numbers? Why are they important? Why is it important to know numbers in French (or any other language)? Can you think of some REAL WORLD.
La Grammaire: Indefinite articles and plural of nouns Page 24.
Français 2: jeudi, le 9 mai, 2013 Activités: Texte p Structure: les pronoms lui, leur Cahier BV p. 141 Activités 7 et 8 Interro 3 formatif Worksheets.
FRANÇAIS 2, 1 DECEMBRE 2014 Cinq minutes preparer à lorale How can you jump off a fifty-foot ladder and not get hurt? Saponify – to convert into.
Les verbes réfléchis.
LEÇON 74.  Écrivez vos devoirs: 1.The ENTIRE devoirs packet. 2.Prepare for a lesson 18 quiz Monday/Tuesday.  Sortez vos devoirs: A1, B1, et C1.  Tout.
Le Pronom Y. Rules Y replaces a location and translates as “there”. Ils y sont allés. It is placed before the conjugated verb ( * exception when Y is.
WINS Windows Internet Name Service. What is WINS?  It does name resolution (?!) DNS resolves IP numbers and FQDN ARP resolves IP numbers and MAC addresses.
Variables et accès en Java
Transcription de la présentation:

Mobile Clients for Location-Based Services Case Study Mobile Clients for Location-Based Services

Plan

Location-based services Pull-based L’usager envoie sa position pour obtenir de l’information Push-based Le fournisseur de service détecte l’usager à proximité et lui transmet de l’information GIS : geographic information systems Déterminer une adresse à partir de la position de l’usager Recherche dans les pages jaunes Calcul de trajets Cartes sur mesure Coûteux et complexe à opérer Maintenir le système Coûts des licences Aggrégation et mise-à-jour des données géographiques Administration des serveurs Bon candidat pour transformation en service web

Service Web MapPoint Services généraux Services de recherche GetCountryRegionInfo, GetDataSourceInfo… Services de recherche Géocodage et géocodage inverse Points d’intérêts Services de calcul de parcours Trajets, descriptions d’itinéraires, cartes... Services de rendus Mise en évidence des routes, icônes, zoom...

Architecture de base Pour trouver un trajet, il faut faire plusieurs requêtes Coûteux et long Introduire une façade

Développement Générer les classe stubs Java pour l’API SOAP de MapPoint À partir de ces classes développer un client de plus haut niveau Transformer le client en service web Générer son fichier WSDL (.wsdd)

public class MPClient { // Authentication credentials obtained from MapPoint Website. private static String userName = "yourID"; private static String password = "yourPass"; // Other variables. // The cached route segments. private Segment[] segments; /* Get the driving directions between two human-ready addresses. This method also caches the route in the segments array. You have to run this method before you can retrieve maps for the entire route or for each route segment. */ public String [] getDirections ( String fromStreet, String fromCity, String fromState, String fromZip, String toStreet, String toCity, String toState, String toZip ) throws Exception { // Method body. } /* Return the number of segments of the current cached route. The number is available after you call the getDirections() method. public int getSegmentNum () throws Exception { /* Get a map from the current cached route. The return value is a byte array for the GIF image. index == 0 for the overview map index <= segmentNum for a segment map public byte [] getMap (int index, int width, int height) throws Exception {

Un client CDC

import org.ksoap.*; import org.ksoap.transport.*; import org.ksoap.marshal.*; public class AWTMap extends Frame implements WindowListener, ActionListener { private String endPointURL; // variables contenant les composants de l’interface private ScrollPane scroll; ETC. private ClassMap cm; private Marshal md; public AWTMap (int width, int height) { super("MapPoint Java demo"); try { cm = new ClassMap (); md = new MarshalBase64 (); md.register (cm); endPointURL = "http://128.83.129.226:8080/axis/services/MapPoint"; go.addActionListener(this); // construction de l’interface go = new Button("Go"); startScreen(); } catch (Exception e) { e.printStackTrace(); }

private void listScreen (boolean newSearch) { try { if (newSearch) { SoapObject method = new SoapObject("", "getDirections"); // Use the SE version for standard JDK // Http methods HttpTransportSE rpc = new HttpTransportSE(endPointURL, "\"\""); rpc.setClassMap(cm); method.addProperty("in0", fromStreet.getText()); method.addProperty("in1", fromCity.getText()); method.addProperty("in2", fromState.getText()); method.addProperty("in3", fromZip.getText()); method.addProperty("in4", toStreet.getText()); method.addProperty("in5", toCity.getText()); method.addProperty("in6", toState.getText()); method.addProperty("in7", toZip.getText()); Vector v = (Vector) rpc.call (method); directionsList = new java.awt.List(10, false); directionsList.add("Overview Map"); for (int i = 0; i < v.size(); i++) { directionsList.add((String) v.elementAt(i)); } directionsList.setSize(200, 200); //...

private void listScreen (boolean newSearch) { try { //... Panel top = new Panel (); top.setLayout(new FlowLayout(FlowLayout.LEFT)); top.add(directionsList); Panel bottom = new Panel (); bottom.setLayout(new FlowLayout(FlowLayout.LEFT)); bottom.add(startOver); bottom.add(showMap); scroll.remove(content); content = new Panel (); content.setLayout(new BorderLayout()); content.add(top, BorderLayout.CENTER); // content.add(mid, BorderLayout.CENTER); content.add(bottom, BorderLayout.SOUTH); scroll.add(content); setVisible(true); } catch (Exception e) { e.printStackTrace(); }

private void mapScreen (int i) { try { ImageItem img; byte [] imgarray; SoapObject method = new SoapObject("", "getMap"); HttpTransportSE rpc = new HttpTransportSE(endPointURL, "\"\""); rpc.setClassMap(cm); method.addProperty("in0", new Integer(i)); method.addProperty("in1", new Integer(200)); method.addProperty("in2", new Integer(200)); imgarray = (byte []) rpc.call (method); img = new ImageItem(imgarray, 200, 200); Panel top = new Panel (); top.add(img); Panel bottom = new Panel (); bottom.add(startOver); bottom.add(showDirections); scroll.remove(content); content = new Panel (); content.setLayout(new BorderLayout()); content.add(top, BorderLayout.CENTER); content.add(bottom, BorderLayout.SOUTH); scroll.add(content); setVisible(true); } catch (Exception e) { e.printStackTrace(); }

Un client MIDP

public class MIDPDirections extends MIDlet implements CommandListener { Display display; Command fromNext, toNext, cancel, done, exit; TextField fromStreet, fromCity, fromState, fromZip; TextField toStreet, toCity, toState, toZip; String endPointURL; public MIDPDirections () { endPointURL = "http://128.83.129.226:8080/axis/services/MapPoint"; display = Display.getDisplay(this); fromNext = new Command("NEXT", Command.SCREEN, 2); toNext = new Command("NEXT", Command.SCREEN, 2); cancel = new Command("CANCEL", Command.SCREEN, 2); done = new Command("DONE", Command.SCREEN, 2); exit = new Command("EXIT", Command.SCREEN, 2); fromStreet = new TextField("Street", "", 20, TextField.ANY); fromCity = new TextField("City", "", 20, TextField.ANY); fromState = new TextField("State", "", 10, TextField.ANY); fromZip = new TextField("Zip", "", 10, TextField.NUMERIC); toStreet = new TextField("Street", "", 20, TextField.ANY); toCity = new TextField("City", "", 20, TextField.ANY); toState = new TextField("State", "", 10, TextField.ANY); toZip = new TextField("Zip", "", 10, TextField.NUMERIC); } public void startApp() { fromScreen (); public void pauseApp() { // Do nothing public void destroyApp(boolean unconditional) { // Do nothing

public void commandAction(Command command, Displayable screen) { if (command == exit) { destroyApp(false); notifyDestroyed(); } else if ( command == done || command == cancel ) { startApp (); } else if ( command == fromNext ) { toScreen (); } else if ( command == toNext ) { directionScreen (); } public void fromScreen () { Form form = new Form ("From"); form.append(fromStreet); form.append(fromCity); form.append(fromState); form.append(fromZip); form.addCommand(fromNext); form.addCommand(cancel); form.setCommandListener( (CommandListener) this); display.setCurrent(form); public void toScreen () { Form form = new Form ("To"); form.append(toStreet); form.append(toCity); form.append(toState); form.append(toZip); form.addCommand(toNext);

public void directionScreen () { Vector v = getDirections (); Form form = new Form ("Directions"); for (int i = 0; i < v.size(); i++) { form.append((String) v.elementAt(i) + "\n"); } form.addCommand(done); form.addCommand(exit); form.setCommandListener( (CommandListener) this); display.setCurrent(form); private Vector getDirections () { Vector v = null; try { SoapObject method = new SoapObject("", "getDirections"); method.addProperty("in0", fromStreet.getString()); method.addProperty("in1", fromCity.getString()); method.addProperty("in2", fromState.getString()); method.addProperty("in3", fromZip.getString()); method.addProperty("in4", toStreet.getString()); method.addProperty("in5", toCity.getString()); method.addProperty("in6", toState.getString()); method.addProperty("in7", toZip.getString()); HttpTransport rpc = new HttpTransport(endPointURL, "\"\""); v = (Vector) rpc.call (method); } catch (Exception e) { e.printStackTrace(); return v;

Location-based services 3 questions Où suis-je ? Qu’est-ce qu’il y a autour de moi ? Comment puis-je me rendre à un lieu donné ? Fonctionnement Déterminer la position de l’usager Soit faire le calcul de la position au niveau du serveur et envoyer les données à l’appareil Soit obtenir des données de localisation directement à partir de l’appareil de l’usager Utiliser la position et des informations complémentaires pour fournir des services personnalisés Standard Open Location Services (OpenLS), un standard fondé sur XML pour faire des requêtes à un GIS

Localisation WiFI WLAN-based Real-time Asset Tracking System in Healthcare Environments Jong-Hoon Youn, Hesham Ali, Hamid Sharif, Jitender Deogun, Jason Uher, Steve Hinrichs Wimob 2007

GPS et D(ifferential) GPS Differential Global Positioning System (DGPS) is an enhancement to Global Positioning System that uses a network of fixed ground based reference stations to broadcast the difference between the positions indicated by the satellite systems and the known fixed positions.

Assisted GPS Pour améliorer la performance Les GPS conventionnels ont de la difficulté à donner des positions fiables lorsque les conditions de réception des signaux sont mauvaises (canyons urbains, signaux affaiblis par les arbres, à l’intérieur des édifices… Incapacité à télécharger l’almanach et les éphémérides à partir des satellites GPS, incapables de fonctionner si un signal clair n’est pas reçu pendant au moins 1 minutes Un récepteur A-GPS peut résoudre ces problèmes à l’aide d’un serveur d’assistance Le serveur d’assistance peut localiser le téléphone grâce à la cellule à laquelle il est connecté. Le serveur d’assistance possède un signal satellite de qualité et de la puissance de calcul, de sorte qu’il peut comparer les signaux fragmentaires reçus par le téléphone cellulaire avec le signal qu’il reçoit et informer le téléphone cellulaire de sa position Le serveur d’assistance peut fournir au téléphone cellulaire les données orbitales des satellites GPS, permettant au téléphone cellulaire de se synchroniser avec les satellites quand il ne le pourrait pas et ainsi de calculer de manière autonome sa position Le serveur d’assistance possède une meilleure connaissance des conditions pouvant affecter le signal GPS (e.g. l’ionosphère ) permettant des calculs de position plus précis

Améliorer les instructions Déterminer la position de l’usager À partir du terminal GPS GPS-lookup lent À partir du réseau Opérateurs cellulaires Position des antennes Triangulation GPS assisté 1- utiliser le réseau pour une première approximation 2- GPS pour affiner la position Réseau sans fil locaux WIFI, BlueTooth, UWB Usager Simplement lui demander d’indiquer le point de repère le plus proche

CLDC v1.1 minimum JSR-000179 Location API for J2ME http://www.forum.nokia.com/document/Java_ME_Developers_Library_v1/GUID-4AEC8DAF-DDCC-4A30-B820-23F2BA60EA52/index.html

Criteria criteria = new Criteria (); Criteria.setPreferredResponseTime(20); Criteria.setVerticalAccuracy(10); //set another criteria LocationProvider provider = LocationProvider.getInstance (criteria); // the StepTracker’s locationUpdated() method will be called // every 1 second until the 100th second. // the past location data can not be more than 2 second old. StepTracker tracker = new StepTracker(); Provider.setLocationListener(tracker, 1, 100, 2); //add the collision handling logic. The CollisionHandler’s //proximityEvent() method is called whenthe device enters the 0.5 //meter radius of either coord1 or coord2. Coordinates coord1 = new Coordinates(lat1, long1, alt1) ; Coordinates coord2 = new Coordinates(lat2, long2, alt2); CollisionHandler collision = new CollisionHandler (); provider.addProximityListener(collision, coord1, 0.5); provider.addProximityListener(collision, coord2, 0.5);

La classe StepTracker public StepTracker implements LocationListener { // both thread below must return immediately // so put long processes in a separate thread public void locationUpdated (LocationProvider provider, Location location ) // do something with the new location // for example update the steps on the map } public void providerStateChanged ( LocationProvider provider, int newState) //handle the state change // for example if the provider becomes unavailable, // alert the user.

La classe CollisionHandler public CollisionHandler implements ProximityListener { public CollisionHandler () {} public void proximityEvent(Coordinates coordinates, Location location ) //handle the collision here. For example alert the user and //provide a direction to move away from the collision point. } public void monitoringStateChanged (Boolean isActive) //handle the state change in the provider

Bonnes pratiques Gérer gracieusement la non-disponibilité du service La position de l’usager peut ne pas être disponible L’appareil ne peut pas fournir la position du l’usager à cause de la méthode de localisation utilisée Dans un canyon GPS, dans un tunnel, dans un avion…. L’usager n’a pas permis que l’on transmette l’information de localisation Aucun fournisseur de service de localisation n’est disponible actuellement. En fonction de la méthode utilisée, la détermination de la position peut prendre un temps prolongé Le délai peut être tellement long que à la fin, le résultat n’est plus pertinent Application de navigation Garder l’usager informé Les coûts associés à certains services de localisation peuvent grimper rapidement Exemple: les méthode de localisation à l’aide des réseaux cellulaires Ne pas surutiliser les services tarifés Tenir compte des impératifs liés à la protection de la vie privée Informer les clients au sujet de données de localisation recueillies sur eux L’utilisation de ces données de localisation Offrir aux client la possibilité de choisir quelles données de localisation seront révélées Ofrir aux clients l’option de ne pas participer à un service Permettre aux clients de visualiser et réviser les permissions accordées dans leur profil de telle sorte qu’ils sachent ce qui est permis Protéger les informations de localisation de telle sorte qu’elles ne puissent pas être accédées par des personnes non-autorisées.

Sécurité et vie privée Marketing ciblé Embarras Harcèlement La position des usagers peut être utilisé pour classer les clients dans des applications de marketing ciblés. Embarras Connaître la position d’un autre usager peut conduire à des situations embarrassantes. Harcèlement Les informations de localisation peuvent être utilisées pour harceler ou attaquer un usager Déni de service Une compagnie d’assurance pourrait refuser une réclamation si elle apprend qu’un usager a visité une zone à haut risque Restrictions légales Certains pays règlemente l’utilisation des données personnelles CONCLUSION : les usagers doivent savoir quand leur position est fournie à une application.

Le standard NMEA-0183 NMEA - National Marine & Electronics Association Transmission des données sous forme de trames caractères ASCII, tous imprimables, à la vitesse de transmission de 4800 bauds. Le GPS délivre à intervalle régulier (généralement chaque seconde) une série trames dont la trame $GPRMC, et ce même s'il n'est pas encore dans la possibilité de donner des informations fiables (pas assez de satellites fixés par exemple). Chaque trame commence par le caractère $ Se termine par les caractères [CR] Retour Charriot et [LF] Retour à la ligne

Composition des trames Chaque trame commence par le caractère $ Suivi par un groupe de 2 lettres pour l'identifiant du récepteur.(non limitatif) citons: GP pour Global Positioning System. LC Loran-C receiver. OM Omega Navigation receiver. II Integrated Instrumentation (eg. AutoHelm Seatalk system). (Pour certains fabricants propriétaires comme par exemple : Garmin, l'indication P pour propriétaire est suivie du code 3 lettres du fabricant garmin = $PGRM, puis ensuite l'identifiant de trame et le format des données sont libres pour ce fabriquant). Puis un groupe de 3 lettres pour l'indentifiant de la trame. GGA : pour GPS Fix et Date. (les satellites disponibles et la précision des mesures ) GLL : pour Positionnement Géographique Longitude-Latitude. GSA : pour DOP et satellites actifs. GSV : pour Satellites visibles. VTG : pour Direction (cap) et vitesse de déplacement (en noeuds et Km/h). RMC: pour données minimales exploitables spécifiques. Suivent ensuite un certain nombre de champs (fields) séparés par une « virgule » , agissant comme séparateur de champs. Et enfin un champs optionnel dit checksum précédé du signe * , qui représente le OR exclusif de tous les caractères compris entre $ et * (sauf les bornes $ et *), certaines trames exigent le checksum. Suit la fermeture de la séquence avec un [CR][LF]. Un total de 82 caractères maximum pour une trame.

La trame GGA Données d'acquisition du FIX - GPS. $GPGGA,123519,4807.038,N,01131.324,E,1,08,0.9,545.4,M,46.9,M, , *42 123519 = Acquisition du FIX à 12:35:19 UTC 4807.038,N = Latitude 48°07.038' N 01131.324,E = Longitude 11°31.324' E 1 = Fix qualification : (0 = non valide, 1 = Fix GPS, 2 = Fix DGPS) 08 = Nombre de satellites en poursuite. 0.9 = DOP (Horizontal dilution of position) Dilution horizontale. 545.4,M = Altitude, en Mètres, au dessus du MSL (mean see level) niveau moyen des Océans. 46.9,M = Correction de la hauteur de la géoïde en Metres par raport à l'ellipsoîde WGS84 (MSL). (Champ vide) = nombre de secondes écoulées depuis la dernière mise à jour DGPS. (Champ vide) = Identification de la station DGPS. *42 = Checksum Non représentés CR et LF.

La trame GLL Position Géographique - Longitude / Latitude - GPS $GPGLL,4916.45,N,12311.12,W,225444,A 4916.46,N = Latitude 49°6.45' Nord. 12311.12,W = Longitude 123°11.12' West (ouest) 225444 = Acquisition du Fix à 22:54:44 UTC A = Données valides Pas de checksum Non représentés CR et LF

La trame GSA Satellites actifs - DOP dilution de précision -GPS $GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39 A= Sélection Automatique 2D ou 3D du FIX (M=Manuel) 3 = Fix 3D 04,05... = PRNs (N° d'Id) des satellites utilisés pour le FIX (maximum 12 satellites) 2.5 = PDOP (dilution de précision) 1.3 = Dilution de précision horizontale(HDOP) 2.1 = Dilution de précision verticale (VDOP) *39 = Checksum Non représentés CR et LF Note : La DOP, dilution de précision est une indication de l'effet de la géométrie des satellites sur la précision du Fix.

La trame GSV Satellites en vue - GPS $GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75 2 = Nombre de trames GSV avec les données complètes. 1 = Trame 1 de 2 trames (jusqu'à 3 trames) 08 = Nombre de satellites visibles (SV). 01 = N° d'identification du 1er Satellite. 40 = Elevation en degrés du 1er Satellite. 083 = Azimuth en degrés du 1er Satellite. 46 = Force du signal du 1er Satellite (Plus grand=meilleur) (Cette séquence se répète jusqu'à 4 satellites par trames. On peut donc avoir jusqu'à 3 trames GSV dans une transmision (12 satellites).) *75 = cheksum non représentés les CR et LF Ce qui vous explique la limitation à 12 satellites de nos petits appareils.

La trame VTG Cap (direction) et vitesse sol GPS $GPVTG,054.7,T,034.4,M,005.5,N,010.2,K 054.7,T = cap réel en Degrés , T (True track made good) 034.4,M = cap vrai magnétique en Degrés (Magnetic track made good) 005.5,N = Vitesse du déplacement par rapport au sol en Noeuds (N) 010.2,K = Vitesse du déplacement par rapport au sol en Kilomètres heure. (K) non représentés CR et LF

La trame RMC Données minimales recommandées de spécification GPS $GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E*68 225446 = Heure du Fix 22:54:46 UTC A = Alerte du logigiel de navigation ( A = OK, V = warning (alerte)) 4916.45,N = Latitude 49°16.45' North 12311.12,W = Longitude 123°11.12' West 000.5 = vitesse sol, Knots 054.7 = cap (vrai) 191194 = Date du fix 19 Novembre 1994 020.3,E = Déclinaison Magnetique 20.3 deg Est *68 = checksum obligatoire Non représentés CR et LF Ces données "minimales" , sont le plus souvent utilisées dans les programmes de navigation-GPS simples.

Visualiser les données GPS PC et Pocket PC (freeware) WDGPS: Outil freeware de connexion GPS et de conversions multiformats http://www.wdgps.com/ Pocket PC http://www.wdgps.com/WDGPS_CE.html

Application Java Code libre Code libre ? (rapport) GPSylon http://www.tegmento.org/gpsylon/ Google Maps+NMEA http://googlemapsnmea.sourceforge.net/ Code libre ? (rapport) Librairie Java pour l’utilisation d’un récepteur GPS Bluetooth sur téléphone mobile http://72.14.205.104/search?q=cache:6DQqmZXQIBsJ:www.universal-locator.com/rapport.pdf+NMEA+GPS+tutorial+Java&hl=fr&ct=clnk&cd=6

Références Enterprise J2ME Chapitre 18 Let the mobile games begin http://www.javaworld.com/javaworld/jw-05-2003/jw-0516-wireless.html?page=1 JSR 179: Location API for J2ME http://www.jcp.org/en/jsr/detail?id=179 http://www.forum.nokia.com/document/Java_ME_Developers_Library_v1/GUID-4AEC8DAF-DDCC-4A30-B820-23F2BA60EA52/index.html J2ME and Location-Based Services http://developers.sun.com/mobility/apis/articles/location/ NMEA http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=17661