Navi-Apps mit Java-Schnittstellen?

Hallo ihr App-Profis.

Ich suche eine Navi-App, der ich bei Start schon ein Ziel vorgeben kann. Im Idealfall kann mir die Navi-App dann sogar sagen, wie weit die Strecke zum vorgegebenen Ziel ist.

Vorstellen tue ich mir das so: Ich habe in meiner App einen Button: “Zum Ziel navigieren”. Dieser Button startet die Navi-App mit dem von meiner App eingegebenem Ziel.

Ist euch eine solche App bekannt? Ob für Android oder ein anderes Betriebssystem ist erstmal egal, da die Entwiklung meiner App sich wahrscheinlich danach richten wird, auf welchem Betriebssystem eine solche Navi-App zur Verfügung steht.

Grüße Natac

Die Google Navigation App kann das doch oder? Die kann ja auch von Websites aus mit Koordinaten aufgerufen werden (Android fragt dann ob mit Browser oder Navigation öffnen). Das ist doch das Verhalten was du möchtest oder?

Sollte mit Google Maps möglich sein: http://stackoverflow.com/questions/15027867/android-google-maps-api-v2-start-navigation

Also mir geht es eben nicht darum, eine Karte einzublenden, sondern eine richtige Navigation zu starten (“Nächste links”, “5km dem Straßenverlauf folgen”, etc…). Wenn ich nur ne Karte mit Zielpunkt habe wollen würde, würde ich nicht fragen ;).

Ja, ich meine Google Maps kann das. In dem von mir geposteten Link wird gezeigt wie man Google Maps zwei Standorte übergibt und da man GMaps afaik als Navigationsgerät nutzen kann sollte es damit ja dann wunderbar klappen.

Mal ein bischen Background: Aktuell soll ich eine Recherche durchführen, welche Navi-Apps es gibt, die man von einer eigenen App aus „anschubsen“ kann. Dabei soll das Betriebsystem erstmal egal sein, was mir meine Suche natürlich unheimlich erleichtert :twisted:.

Okay, nachdem ich mich mal ein bischen eingelesen habe (bin selbst (noch) kein Android-Entwickler), glaube ich nun zu verstehen, wie das zumindest bei Android funktioniert (per „Intent“). So ein „Intent“ wird ja von der eigenen App losgeschickt in der Hoffnung, dass eine andere App damit etwas anfangen kann.

Jetzt meine Frage: Wie sehe ich einer Navi-App für Android an, ob sie ein Intent meiner App entgegennehmen würde? Gibts es da evtl irgendeinen Fachbegriff, nach dem ich suchen könnte? Ich finde in den App-Beschreibungen immer nur sehr blumige Erläuterungen, wie toll die GUI und das Handling doch sind. Was bei meiner Fragestellung ja nur sekundär interessiert.

Danke schonmal für eure Hilfe :slight_smile:

Hast du meinen Post überlesen? Die Google Navigation kann das! Die ist afaik doch auf jedem Android Device da. Alle anderen Hersteller Apps sollten die gleiche Api nutzen um die Google App als Standard Navi Dienst zu ersetzen. Guck dir die an dann müsstest du es auch für andere können.

[QUOTE=kappesf]Hast du meinen Post überlesen? Die Google Navigation kann das! Die ist afaik doch auf jedem Android Device da. [/QUOTE]Nein, das hatte ich nicht überlesen, aber die Google-App scheidet aus, weil die Navigation auch offline verfügbar sein muss.

[QUOTE=kappesf;24880]Alle anderen Hersteller Apps sollten die gleiche Api nutzen um die Google App als Standard Navi Dienst zu ersetzen. Guck dir die an dann müsstest du es auch für andere können.[/QUOTE]Ich meine Sinn machen würde es durchaus, aber das ist ja in der Software-Branche noch lange kein Grund, dass es auch so Umgesetzt wurde. Bist du dir da sicher, dass alle Apps, die Navigation auf Android bereitstellen die Gleiche “API” haben, wie die Google App?
Denn ich könnte mir gut vorstellen, dass einige Apps auch einfach nur “für den User direkt” entwickelt wurden, ohne eine API nach außen. Oder tickt die Android-Community da anders, so das sowas eigentlich der Sonderfall sein sollte!?

Ich hab keine andere App installiert. Ich denke aber schon, dass die großen Anbieter es so enigerichtet haben, dass man die Standard Navi App ersetzen kann (wie bei den Browsern). Hat man z.B. den Opera Mini installiert und klcikt nen Link an wird man ja gefragt mit welchem Brwoser man öffnen will. Sowas gibts ja auch für die Navi Apps denke ich mal.

Was jetzt zugegebenermaßen eine Vermutung ist, dass diese Apps auch die gleiche Api nutzen. Soweit ich weiß registreiren diese sich im System als Browser und dass sie die entsprechenden Commands verstehen. Ganz sicher bin ich aber nicht. Frage doch mal @Tomate_Salat der hat schon Android Apps geschrieben, vielleicht weiß er mehr über die API Kongruenz bei “gleichen” Apps.

Hörst du auf die Leute zu was anzustiften :D. Also mit Navigation kenne ich mich jetzt weniger aus, aber wenn die „andere“ Navigation Intents gleich/identisch interpretiert dann kann das durchaus funktionieren. Allerdings würde ich mich darauf nicht verlassen.

Und wie bekomme ich raus, ob eine App einen Intent
a) Überhaupt interpretiert
b) Wie er aussehen muss?

Jede App runterladen und ausprobieren kann doch nicht die Lösung sein!? Kann man sowas irgendwie nachgucken, oder muss ich mich wirklich auf die App-Beschreibung beschränken, die sich über solche Themen gerne ausschweigt.

Das ist i.d.T. ein Problem. Hier muss man leider darauf bauen, dass die Entwickler Ihre Schnittstellen entsprechend Dokumentiert haben.

Jede App runterladen und ausprobieren kann doch nicht die Lösung sein!?

Das ist das einzige verlässliche. Ich würde an deiner Stelle einfach Google Maps voraussetzen und das vor allem auch in die Beschreibung deiner App schreiben! Zusätzlich musst du dann in deiner App einfach nachfragen ob es einen Handler für den Intent gibt und gegebenenfalls eine Fehlermeldung anzeigen. Nur so kannst du verhindern, dass die App einfach abschmiert. Hierund hiergibt’s dazu nützliche Tipps wie man das macht.

Warum die eine App voraussetzen und nicht zB. Openstreetmaps rein in die Kalkulation nehmen? Weil die keine API vorgeben und es verdammt viele verschiedene Apps gibt. Hier ein eine Auflistung von Apps.

Das ist i.d.T. ein Problem. Hier muss man leider darauf bauen, dass die Entwickler Ihre Schnittstellen entsprechend Dokumentiert haben.

Kann man glaub ich vergessen. Nicht mal die Intents für Youtube sind dokumentiert. Am besten man schaut bei den XDA-Developers vorbei. Die haben sich mit dem Thema hierauch schon beschäftigt.

Resultat:


startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=" + mLatitude + "," + mLongitude)));

Das startet die Navigation. Möchtest du z.B. für den Fußgänger navigieren lassen musst du noch &mode=w anhängen. Für Rad weiß ich es nicht. Vermutlich b für bycle oder so. Da hilft nur Logcat anschmeißen und mal überwachen was da wirklich gestartet wird.

Ich arbeite ja nicht unter Android hätte aber wirklich gedacht die intents wären dokumentiert…

Nein leider nicht. Das mit Intents kann echt eine zeitaufwendige+nervige Sache werden. Mein letzter Fall war das Skalieren eines Bildes über die Galerie … auf einem Testgerät hat es funktioniert und auf einem weiteren nicht (eine Lösung habe ich bisher noch nicht gefunden, hat aber auch keine hohe Priorität)

Ist es eigentlich möglich, über einen Intent (oder eine ähnliche Konstruktion) auch eine Antwort von der angestarteten App zu bekommen?

Am Beispiel der Navigation wären etwa die Gesamtstrecke in km interessant.

Ja, wenn das von der Gegenstelle vorgesehen ist kannst du das mit startActivityForResult