GPS-Daten ausweriten Eclipse / Java / Android

Hallo, ich möchte eine kleine App mit Eclipse für Android entwickeln, die einem immer anzeigt, wo man sich gerade befindet. Die Position soll per GPS ermittelt werden. Anhand einer kleinen "Datenbank" soll nun herausgefunden werden, welcher Text (Stadt) zu der Position passt. Dies ist der Quellcode für die Position (Long und Lat = Länge und Breite).

class mylocationlistener implements LocationListener{

        @Override
        public void onLocationChanged(Location location) {
            if(location != null)
            {
            double pLong = location.getLongitude();
            double pLat = location.getLatitude();

            textLat.setText(Double.toString(pLat));
            textLong.setText(Double.toString(pLong));

            }
            }

        }

Jetzt möchte ich, dass die beispielhaft aufgeführten Städte in einem TextView angezeigt werden, wenn der aktuelle Standort einer Stadt nahe kommt. Eigentlich beabsichtige ich derzeit, dies einfach nur mit if-Abfragen zu bestimmen, da ich von SQL leider noch viel weniger Ahnung habe.

Long.............Lat..............Stadt

52.516221, 13.392105 Berlin

53.572938,9.984741 Hamburg

48.144098,11.555786 München

Ich habe mir gedacht, dass es für jede Stadt eine kleine Abweichung geben soll. Beispiel:

Long min ......Long max..............Lat min...........Lat max ........Stadt

52.516219....52.516223............13.392103.....13.392107....Berlin

53.572936....53.572940.............. 9.984739......9.984743.....Hamburg

48.144096....48.144100..............11.555784...11.555788.....München

Berlin soll also als Stadt ausgegeben werden wenn folgende 4 Bedingungen erfüllt sind:

  1. pLong größer als 52.516219 (Long min)
  2. pLong kleiner als 52.516223 (Long max)
  3. pLat größer als 13.392103 (Lat min)
  4. pLat kleiner als 13.392107 (Lat max)

Des Weiteren soll die Methode erstmal damit aufhören, weiterhin Standortdaten auszulesen, sobald eine Stadt gefunden wurde.

Vielen Dank bereits im Voraus

...zum Beitrag

Es gibt unter Android die Klasse Geocoder, die das macht, was du möchtest. Du gibst ihr Koordinaten und sie liefert Dir eine Liste möglicher Adressen. Wenn du nur die Stadt brauchst, nimm vom ersten Treffer eben das entsprechende Feld. Oder den häufigsten Wert aus allen Treffern, wenn du sicher gehen möchtest.. Wenn du es genauer brauchst lass den User auswählen.

...zur Antwort

Ich weiß nicht, ob Dir diese Frage schon ausreichend beantwortet wurde, aber ich probiere es nochmal:

In der objektorientierten Programmierung versucht man das jeden Programmteil durch eigenständige Objekte zu beschreiben.

Objekte enthalten immer ihre eigenen Daten(Attribute) und Funktionen. So kann beispielsweise ein Objekt "EMaileingabefeld" folgende Attribute haben: Schriftart, Schriftgröße, Emailadresse und eine Methode überprüfeTexteingabe(), die prüft, ob der eingegebene Text eine Emailadresse ist.

Ein Objekt kann natürlich wieder aus beliebig vielen Objekten bestehen.

Ein beliebtes Beispiel ist dabei ein Objekt Auto, das neben anderen Attributen eben auch vier Objekte "Reifen" enthält. Ein Reifen kann dann beispielsweise die Attribute Typ(Winter- oder Sommerreifen), optimaler Luftdruck und aktueller Luftdruck enthalten.

Wie detailliert man die Objekte ausbildet ist von Programm zu Programm unterschiedlich und hängt von der Problemstellung ab.

Möchtest Du eine Verkehrssimulation schreiben ist wahrscheinlich der Reifen als Teil des Autos uninteressant und wird nicht einzeln ausgeprägt. Schreibst Du hingegen eine komplexe Crashsimulation ist der Reifen als eigene Einheit mit wesentlich mehr Attributen und Methoden ausgebildet.

Es geht also hauptsächlich darum, das das Programm in einzelne Objekte unterteilt wird, die mehr oder weniger autonom ihre Aufgaben erfüllen.

Dagegen steht zum Beispiel die sequentielle Programmierung, bei der ein Programm Schritt für Schritt abgearbeitet wird. Das heißt, ich haben einen Einstiegspunkt und im Allgemeinen einen recht engen Ablaufplan ( 1) gib a ein 2) gib b ein 3) berechne c ).

Ist jetzt natürlich stark vereinfacht und natürlich kann man auch in der sequentiellen Programmierung unglaublich komplexe Software schreiben, aber die objektorientierte Programmierung hat den Vorteil, das man eben einzelne Programmteile einfacher bzw. eindeutiger abkapseln und wiederverwenden kann.

...zur Antwort

Ja, äh, ohne die Fehlermeldung und den Quelltext wird Dir hier keiner helfen können... So ein Absturz kann tausende von Gründen haben, die jeweils unterschiedlich schwierig zu beheben sind.

Schau mal, während deine App läuft, in die Logausgaben. Da sollte der Fehler, der zum Absturz führt ausgegeben werden.

...zur Antwort

http://de.wikipedia.org/wiki/LGPL

Ja, du kannst deine Klassen von LGPL-Klassen ableiten ohne sie unter die LGPL stellen zu müssen. Nur Änderungen an der Bibliothek selbst müssen auch wieder unter der LGPL veröffentlicht werden. Das ist der große Unterschied zwischen LGPL und GPL, unter der GPL müssen auch abgeleitete Werke wieder unter der GPL stehen.

Der LGPL-Teil muss mit Lizenz veröffentlicht werden. Im allgemeinen hat man eine Seite/ein Fenster in dem die genutzten OS-Bibliotheken aufgeführt werden mitsamt ihrer Lizenz und einem Link auf deren Seite.

...zur Antwort

Die Klasse R legt Eclipse selber an. Darin werden die Verweise auf alle Ressourcen gespeichert.

Das das nicht geschieht kann mehrere Gründe haben:

1) Du bist zu schnell. Wenn das Projekt das erste Mal gebaut wird, wird die R-Klasse angelegt, stelle sicher, dass alles "Build-Workspace"-Prozesse abgeschlossen sind. Stelle sicher, dass im Menu Project der Punkt Build Automatically angekreuzt ist.

2) Das Android SDK ist nicht richtig installiert, der Pfad zum Android-SDK ist nicht richtig gesetzt (Einstellungen), es wird auf eine Android-Version verwiesen, die nicht installiert ist.

Hast Du das komplette AndroidDeveloperTools-Paket von der Android-Seite installiert oder nur das eclipse-Plugin? Wenn nicht probiere es nochmal damit.

Siehe in den Preferences unter dem Punkt Android nach, ob der Pfad zum SDK richtig gesetzt ist.

Stelle sicher, das die Android-Version, die Du in Deinem Projekt verwenden möchtest auch im SDK-Manager installiert ist (MEnu-Windows-Android SDK Manager)

WEnn das alles nicht hilft, ist wahrscheinlich irgendwas bei der Installation fehlgeschlagen. Ich würde dann die DeveloperTools inkl. SDK nochmal deinstallieren und neu installieren.

gruß, Paul

...zur Antwort

Das scheint Javascript zu sein, dass innerhalb einer JavaVirtualMachine ausgeführt wird. Deshalb hat man auch Zugriff auf Java-Klassen.

Der bekannteste Java-Javascriptinterpreter ist Rhino: https://developer.mozilla.org/en-US/docs/Rhino_documentation

Auf jeden Fall ist diese Konstruktion nicht dazu geeignet den Unterschied zwischen Java und Javascript klar zu machen ;-)

...zur Antwort

Die meisten Antworten sind ja schon gegeben worden. Asymmetrische Verfahren sind wesentlich rechenintensiver, haben aber den Vorteil, dass kein gemeinsamer Schlüssel vorhanden sein muss.

Bei Datenblöcken wie EMails fällt die Rechenzeit nicht so sehr ins Gewicht, da es im Allgemeinen nicht so dramatisch ist, wenn man beispielsweise 500ms statt 100ms auf den Klartext warten muss. Bei Datenströmen, die laufend entschlüsselt werden müssen, wäre so ein Unterschied allerdings schon merklich.

Deshalb verwendet SSL beispielsweise das asymmetrische Verfahren nur um einen symmetrischen Schlüssel sicher zwischen Server und Client zu teilen.

Wie genau, das asymmetrische Verfahren funktioniert, darüber wurden ganze Bücher geschrieben. Aber grundsätzlich erstmal geht es darum, dass ein Schlüsselpaar generiert wird. Einer der beiden Schlüssel wird als privat definiert, der andere als öffentlich. Was mit dem eine Schlüssel codiert wurde lässt sich nur mit dem anderen decodieren.

Nun zur EMail, da es hier zwischen Verschlüsselung und Signierung zu Verwirrungen zu kommen scheint.

Wenn ich jemandem eine verschlüsselte EMail schicken möchte benötige ich seinen öffentlichen Schlüssel. Mit dem verschlüssele ich die Mail und nur der Besitzer des zugehörigen privaten Schlüssels kann sie entschlüsseln.

Bei der Signatur geht es darum, dem anderen zu versichern, dass ICH der tatsächliche Absender der Mail bin und dass der Inhalt nicht geändert wurde. Dazu erzeuge ich einen Hash über den Inhalt der Mail und verschlüssele diesen Hash mit meinem privaten Schlüssel. Der Empfänger hat meinen öffentlichen Schlüssel (von dessen Echtheit muss er sich entweder persönlich überzeugen oder einer sogenannten CA (Certificate Authority) vertrauen, die meinen Schlüssel wiederum als echt bestätigt) mit dem er den Hash entschlüsseln kann und überprüfen kann. Der eigentliche Inhalt der Mail wird dabei aber nicht verschlüsselt und ist für jeden, der dazwischen steht lesbar.

...zur Antwort

Hi,

alles wichtige findest Du erstmal unter http://developer.android.com Da bekommst Du das SDK, die Emulatoren und vor allem wichtige Tips und Tutorials. Ist aber alles auf englisch...

Viel Spaß!

...zur Antwort

Hi, das geht bei Android mit Intents und startActivityForResult(...).

In dieser Antwort ist es mit Quelltext beschrieben: http://stackoverflow.com/questions/2169649/get-pick-an-image-from-androids-built-in-gallery-app-programmatically

...zur Antwort

Also die erste Adresse für Android-Programmierung ist natürlich http://developer.android.com/index.html

Dort kannst du eine komplette Entwicklungsumgebung herunterladen und findest jede Menge Dokumentation und Beispiele. (In den meisten Anfänger-Tutorials steht noch, wie man erst das SDK, dann Eclipse und dort hinein dann ADT installiert, das braucht man heute nicht mehr, das gibt es als Gesamtpaket von der AndroidDeveloper-Seite, nur das JDK muss man vorher installiert haben)

AndroidApps werden in Java programmiert, einen Link zu "Java ist auch eine Insel" hast du ja schon in den 20.000 Kommentaren unten bekommen ;-) Das Verständnis für die Sprache ist wirklich elementar, deshalb würde ich erstmal damit anfangen. Aber vielleicht kann man durchaus schnell Java am Beispiel einer App-Entwicklung lernen.

www androidpit de / de / android / wiki / view / AndroidAnf%C3%A4ngerWorkshop

www app-entwickler-verzeichnis de / apps-programmierung / 24-android / 297-android-programmierung-tutorial-der-grosse-android-newbie-guide

...zur Antwort

Ich kene mich mit CDI nicht so gut aus, aber solange es sich nicht selbst um Hibernate- bzw. JPA-Objekte kümmert (wie es z.B. Spring macht) solltest du die beiden nicht mischen.

Um "Injection" vernünftig zu machen erstellt CDI Proxyklassen statt auf den Originalklassen zu arbeiten. Deshalb hast Du auch keine Hibernate-Klasse mehr, sondern eben diese Proxyklasse.

Wir arbeiten bei uns mit sogenannten DataTransfer-Objekten. Die können von CDI gemanaged werden, und Save/Update/Delete-Methoden darin verwalten dann die zugehörigen Hibernate-Entities.

...zur Antwort

So ein Blödsinn hier. Natürlich gibt es Bücher die beschreiben was Hacking ist, wie es funktioniert und wie man es tut. Und die haben dann auch keine rosige Umschreibung, wie Sicherheitstools und ihre Schwachstellen" sondern sie heißen kurz und prägnant "Hacking", "Hacking School" oder "Network Hacking". Einfach mal hacken bei Amazon eingeben und die Dummschwätzer hier vergessen!

...zur Antwort

Nein, das S3-ROM bietet diese Möglichkeit nicht. Es gibt Möglichkeiten, Änderungen einzuspielen, allerdings verlierst Du damit jegliche Garantieansprüche und es ist nicht ganz trivial: http://forum.xda-developers.com/showthread.php?t=1709586

Also, für den Normal-User: Nein, das geht nicht!

Für den technisch versierten, der sich der Risiken bewusst ist: Ja, wenn man das Gerät rootet, den Bootloader knackt und das Betriebssystem patcht. Das ist alles nicht illegal, aber im schlimmsten Fall ist dein S3 ein teurer Briefbeschwerer...

...zur Antwort

Was du suchst sind Browser-Plugins wie Greasemonkey oder Stylish. Die passen die Seite mittels JavaScript und CSS auf Deinem Rechner an, bevor sie angezeigt werden.

...zur Antwort

Der "einfache" Weg ist eine 3D Software wie Maya oder Blender. Der klassische, wie ihn beispielsweie die Cohen-Geschwister in Matrix gemacht haben, ist ein Aufbau mit vielen Kameras (25 pro Filmsekunde) die alle im gleichen Moment auslösen...

...zur Antwort

Der erste Vorteil ist, dass du hardwarenah programmieren kannst. Du umgehst halt die virtuelle Maschine. Falls das egal ist, ist der zweite Vorteil dass du in einer Sprache programmierst, die Du schon gut kannst. Du musst nicht C# neu lernen.

Da allerdings die größten Unterschiede nicht in der Sprache selbst sondern in den Bibliotheken liegen, dürfte es aber egal sein, für welche Sprache Du Dich entscheidest...

...zur Antwort

http://m.spiegel.de/netzwelt/web/a-697283.html#spRedirectedFrom=www&referrrer=

Ob die Software mittlerweile verfügbar ist, weiß ich aber nicht...

Es gibt also sehr wohl Software die zumindest einen Tip geben kann, ob und an welchen Stellen Bilder bearbeitet wurden.

Grüße, Paul

...zur Antwort

Entweder statisch oder objektspezifisch. Wenn Du den Wert im Objekt setzen willst, darf die Methode nicht static sein. Ansonsten ist sie eben klassenweit und setzt den Wert nicht in einem speziellen Objekt.

...zur Antwort