Da sich dctrl™, neben Flash, Flex und Air, zukünftig vermehrt auch auf die Entwicklung für Mobile Endgeräte (Android Plattform) spezialisiert, werden wir hier in unserem Blog nun vermehrt auch über diesen Bereich berichten. Den Anfang machen wir hier zum Thema “Android Location Services auf Mac Eclipse”.
Wer sich mit Location Services auf Android beschäftigt wird schnell merken, die einschlägigen Foren sind voll von “verzweifelten” Entwicklern, welche diese einfach nicht zum Laufen bringen. Daher hier kurz (auch für uns selber), Schritt für Schritt, wie man es “richtig” macht!
In der Theorie, oder auch in den Tutorials von Google hört sich alles ganz einfach an. Map-API Zertifikat generieren, App coden, fertig! Läuft Eclipse im DDMS Mode dann können wir über die Konsole Latitude/Longitude Werte an den Debugger schicken und unsere App reagiert entsprechend. Super! Nur es funktioniert nicht!
Der Fehler liegt “für einmal” jedoch nicht an deinem Code, sondern in der verwendeten Android SDK und der damit verbundenen Localisation!
Denn während Nummern im deutschen Sprachraum als 123 456,00 dargestellt werden, verlangt der Debugger die englische (US) Darstellung als 123,456.00.
Was tun?
Nun es gibt verschiedene Lösungen. Die Einzige welche bei uns funktioniert ist folgende:
- Generiere ein Android Maps-API Zertifikat
- Programmiere deine App und vergiss nicht den API-Key im entsprechenden Layout zu integrieren
- ACHTUNG: Benütze die Google SDK, Target Name «Google APIs (Google Inc.)», im AVD Manager und nicht die «Android» SDK. Aber Vorsicht nicht jede API funktioniert! Bei unseren Tests sind wir zu folgendem Resultat gekommen:
3.1 sdk 12 --> works 3.0 sdk 11 --> works 2.33 sdk 10 --> works 2.3 sdk 9 --> NO! 2.2 sdk 8 --> works 2.1 sdk 7 --> works
- Kontrolliere ob die verwendete AVD auch GPS unterstützt:
Create New AVD –> Hardware –> New –> «GPS support» with Value «yes»

- Unter den OSX System Preferences gehe auf «Formats > Numbers» und unter «Language & Text» ändere das Format auf «1,234.56» !!!

- Restart Eclipse
So, und wenn du alles wie zuvor beschrieben eingestellt hast, dann sollten deine Location Services nun auch auf Mac OSX funktionieren! Dies lässt sich über das Terminal sehr einfach testen (vorrausgesetzt dein Code hat keine Bugs!).
- App im Debugger starten
- Im Terminal folgenden Befehl eingeben (5554 ist hierbei die Port Nummer, wie sie im Header des Emulator aufgeführt wird):
telnet localhost 5554
- Als Antwort sollte im Terminal ein «OK» zurück kommen
- Daraufhin gebe folgenden Befehl im Terminal ein (und deine App sollte dementsprechend reagieren):
geo fix -77.036519 38.896143
- Alternativ lassen sich die Lat/Lon Werte auch über die DDMS-Konsole als GPX, … oder an den Debugger senden
Optional
Folgende Einstellungen haben wir zwar hier zwar nicht benötigt, aber falls alles nicht klappt, versuch es nochmals mit einem, oder allen, der folgenden Punkte:
- Unter den OSX System Preferences gehe auf «Language» und unter «Language & Text» setze diese auf «English».

- Ebenfalls in den OSX System Preferences gehe auf «Time Zone» und unter «Date & Time» setze diese auf «United States».

- Füge dem eclipse.ini File
«-Duser.language=en»
(ohne Anführungszeichen) hinzu.
- Setze die java_debug environment in der standalone DDMS ebenfalls auf
«-Duser.language=en»
(ohne Anführungszeichen)
- Delete dein altes Projekt im Debugger unter «Settings»
Und das ist es auch schon. Wie immer freuen wir uns natürlich auf euer Feedback oder auch weitere, diesbezügliche Tips und Fragen!