Le calepin du geek
Geek : Personne s’intéressant à des domaines pointus, avec une once de créativité.

Ceci est un site perso, dans le pur esprit web 1.0, compilant des notes diverses sur des thèmes d’intérêt. (Informatique, programmation, voyage à vélo, réflexions)

Installer un GPS sur un téléphone ayant Java

Forget about your fancy apple or android smartphones, I’m talking about débilouphones with JavaME.

Article mis en ligne le 14 juillet 2014
par aldoniel
Imprimer cet article logo imprimer

 Intro

  • JavaME ? oui, oui J2ME ou java mobile. Avant Android et Iphone OS, existaient déjà les télphones avec applications embarquées. Sauf qu’en France, personne ne s’en est vraiment rendu compte. Pas bien grave, cette technologie n’a jamais bien démarré et est obsolète depuis au moins 2 ans.
  • Néanmoins, elle marche, et bien que peu ergonomique et lente, elle garde ses intérêts d’origine : Une faible consommation de ressources et une interopérabilité entre divers fabricants.
  • Ainsi, je suis l’heureux propriétaire d’un Samsung B2710, qui en plus de ne m’avoir coûté que 75€ neuf, a 3 semaines d’autonomie en usage réel (c’est à dire comme téléphone, et assez rarement comme smartphone).
  • Car oui, en plus d’être simili-étanche et simili-résistant aux chocs, cet engin fait (mal) smartphone.
    • Parfaitement pour lire les mail.
    • médiocrement pour le navigateur
    • très médiocrement pour le GPS.
    • parfaitement pour deux trois trucs annexes (lecteur d’EPUB)...

En l’occurrence, je vais présenter GPSMid

 GPSMid

  • une application JavaME
  • sert de GPS offline, c’est à dire qu’on peut y précharger une petite région (les 3/4 de l’Île-de-France par ex., ou un petit pays comme la Suède). On peut charger en théorie toutes les régions, mais dans des fichiers séparés, avec un réglage au changement de région...
  • À l’usage, c’est effroyablement lent. À réserver exclusivement à un usage piéton (pas pressé.) Mais bon, ça dépanne, ça calcule les itinéraire et cherche les adresses. Ça parle accessoirement (et peut mettre à jour openstreet map...)
  • Bon, c’est gratuit et c’est pas un espion (car offline)
  • Basé sur les cartes Openstreet (map.), qui sur mon engin se chargent sur la carte MicroSD.
  • Accessoirement, je crois que ça peut marcher sous Android, mais il doit y avoir mieux.

 Où récupérer les cartes OpenStreet (Map) ?

  • http://apmon.dev.openstreetmap.org/GpsMid/index.shtml
  • Le problème c’est qu’il n’y a pas grand chose et c’est pas à jour depuis 2012 (je vous avais dit que la technologie est obsolète).
  • En fait, il faut les faire soi-même.
  • Prérequis : lire le site officiel de GPSMid, toutes les infos y sont, sauf les détails de la génération que je traite mieux qu’eux.
  • une machine 64 Bits et au moins 8 Go de RAM.

 1er essai sous Windows 8

  • Le flop complet. Impossible de charger l’écran de sélection de la zone d’intérêt, et du coup j’obtiens toujours un bug de mémoire insuffisante car ma région est trop grande.
  • Rien à faire, toutes les astuces du site officiel, les réinstallation de java, les coups 32 ou 64 bits, le pare-feu rien.
  • java, build once, run anywhere (maybe) (and sluggishly).

 2e essai sous linux

  • essai 2A, Slax Linux : impossible d’installer une machine virtuelle java 64 bits oracle qui marche.
  • essai 2B Debian : CD —> PC —> arrêt sur la console, pas de GUI. Startx ? —> non, rien. Fin.
  • essai 2C : Linux Mint : succès ! Je comprends pourquoi tout le monde préfère cette distro.

 Linux Mint en live clé USB

  • J’ai pris linuxmint-17-mate-dvd-64bit.iso parce que je suis vieux jeu sur l’interface.
  • j’ai installé ça sur une clé de boot avec LinuxLive USB Creator, simple et efficace, et ça ajoute un espace de sauvegarde persistante du système sur la clé (indispensable).
  • 1er souci, quand on ouvre la console, on tape java -version, et ça rend ça
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.6) (7u51-2.4.6-1ubuntu4)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

Bon, je vous la fait brève, sous Linux, il y a la machine java open source qui plante (celle pré-installée [1]), et celle de SUN/Oracle qui marche.

Faut installer la version d’oracle 64 bits.
Il y a un tutoriel là http://community.linuxmint.com/tutorial/view/1091, mais à vrai dire, la désinstallation du java préinstallé ne marche pas, peut être parce que c’est une "installation" live usb, mais ce n’est pas un vrai problème. En fait, j’ai juste téléchargé un binaire universel sur le site d’oracle avant de le décompresser à l’arrache dans mes documents sans taper une ligne de commande contrairement au mec de l’article.

Et voilà :

/home/mint/Documents/jre1.7.0_60/bin/java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)

Ensuite, il faut lancer en ligne de commande (pas le choix), le générateur de GPSMid.

/home/mint/Documents/jre1.7.0_60/bin/java -jar -Xmx7g -XX:+UseCompressedOops /media/mint/DATA/temp/Osm2GpsMid-0.8.2-map72.jar

  • /home/mint/Documents/jre1.7.0_60/bin/java : là où le bon java est installé
  • -Xmx7g : dit à la machine java d’allouer 7 Go de RAM au programme (j’ai 8 Go sur mon PC)
  • /media/mint/DATA/temp/Osm2GpsMid-0.8.2-map72.jar l’emplacement de Osm2GpsMid (en l’occurrence sur un disque dur monté. On monte un disque en cliquant dessus dans l’explorateur sur ce linux).

Attention, si vous n’avez pas alloué assez de mémoire, à moins de générer de petites cartes, vous aurez ce message d’erreur :

Splitting long ways
Exception in thread "Thread-5" java.lang.OutOfMemoryError: GC overhead limit exceeded
        at de.ueller.osmToGpsMid.area.Area.<init>(Area.java:25)
        at de.ueller.osmToGpsMid.model.Way.triangulate(Way.java:1422)
        at de.ueller.osmToGpsMid.SplitLongWays.<init>(SplitLongWays.java:44)
        at de.ueller.osmToGpsMid.BundleGpsMid.run(BundleGpsMid.java:672)
        at java.lang.Thread.run(Unknown Source)

Bref, on prend notre carte ( là par ex : http://download.geofabrik.de/europe/france.html)
On la dézippe et on l’ouvre :

On règle le bitoniau comme ça :
(Cette carte correspond à celle que je laisse en téléchargement en bas).

PNG - 207.3 ko

Perso, je clique sur "create ... map zip" parce que j’ai pas assez de mémoire interne sur mon téléphone pour créer une carte intégrée au jar. Après longtemps, ça donne ça :

Ce qui permet de savoir qu’on a pas planté le bouzin.

On obtient un zip ("GpsMid-0.8.2-map72.zip" ici) à copier sur la microSD, et un jar ("GpsMid-Generic-full-connected-0.8.2-map72.jar") à installer sur le téléphone.

Attention, si vous avez tapé n’importe comment les commandes, les fichiers vont apparaître dans le répertoire de travail spécifié dans la console, et pas celui auquel vous vous attendiez.

 Téléchargement

 Mention légales

Notes :

[1Celle là ne permet pas de faire marcher Osm2GpsMid-0.8.2-map72 (le générateur de cartes de GPSMid

A télécharger

Pas de documents à télécharger pour cet article


Site réalisé sous SPIP
avec le squelette ESCAL-V3
Version : 3.70.61