PC-Datei für Smartphone-App bereitstellen als java.io.File

  • Antworten:8
  • Bentwortet
Wicki11
  • Forum-Beiträge: 103

12.04.2020, 17:55:48 via Website

Ich benutze MapsForge zur Darstellung eines Weges auf der passenden Landkarte
mit Hilfe einer map-Datei.
Diese habe ich bisher auf dem Smartphone gespeichert und das Ganze funktioniert.
Der Weg wird auf der darunter liegenden Karte aufgezeichnet.
Nun will ich eine grössere Karte (bspw. germany.map) benutzen, die ist aber für
das Smartphone zu gross.
Deshalb will ich sie auf dem PC speichern.
Nun meine Frage:
wie kann ich den Zugriff "Smartphone-app -> PC-Datei" realisieren ?
Momentaner Zugriff in der App:

  private File getMapFile() {
  File file = new File(Environment.getExternalStorageDirectory(), mapdatei);
  return file;
}
...
tileRendererLayer.setMapFile(f);
tileRendererLayer.setXmlRenderTheme(InternalRenderTheme.OSMARENDER);

Hier will ich nun die File-Eröffnung so gestalten, dass der File-Parameter auf
die PC-Datei verweist.
PC und Smartphone sind per USB-Kabel verbunden und im gleichen WLAN.
Wie kann ich das realisieren ?
Bitte um Hilfe.

Gruß Wicki

— geändert am 12.04.2020, 18:13:28

Kommentieren
Beste Antwort
Wicki11
  • Forum-Beiträge: 103

17.04.2020, 15:28:10 via Website

Hallo Pascal,
Habe mir MapsforgeTileProviderSample.java angesehen. Ist ziemlich kompliziert, habe bspw. keine Definition von mMapView gefunden und die Integration in meine App würde wahrscheinlich sehr schwierig.
Habe eine andere Möglichkeit gefunden:
man kann eine eigene map-Karte nach eigenen Vorgaben generieren lassen auf der Website https://extract.bbbike.org/
das hat bei mir gut geklappt und die Karte passt auch größenmäßig auf mein Smartphone.
Gruß Wicki

Hilfreich?
Kommentieren
Rafael K.
  • Forum-Beiträge: 2.359

13.04.2020, 08:01:59 via Website

Du willst also vom Handy aus direkt auf den angeschlossenen PC schreiben?
Das wird technisch nicht funktionieren, weil sie sich in diese Richtung weder eine Java VM teilen, noch ein Dateisystem.

Ein Programm auf dem PC könnte hingegen auf das Handy schreiben, weil das gemountete USB-Laufwerk ein Dateisystem ist, das der PC beschreiben kann.

Du müsstest vermutlich einen kleinen technischen Umweg gehen.
z.B. auf dem PC einen FTP, oder SMB Server starten und dich vom Handy aus damit verbinden.

— geändert am 13.04.2020, 08:03:42

Hilfreich?
Kommentieren
Wicki11
  • Forum-Beiträge: 103

13.04.2020, 14:52:25 via Website

Dank für die Antwort.
Ich will nicht auf den PC schreiben, sondern der MapsForge-Komponente in meiner App die map-Datei benennen von der es lesen soll.
Ob das mit dem FTP-Server klappt weiss ich nicht. Das hängt davon ab, ob die MapsForge-Komponente damit zurechtkommt. Mit SMB ist es ähnlich und ich kenne mich mit SMB nicht aus (Installation ?).
Gruß Wicki

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.04.2020, 18:17:05 via Website

Hallo Wicki,

ich denke das wird nicht so funktionieren, da die Datei von Mapsforfe im worst-case auch komplett eingelesen wird und da dauert es dann ewig, bis die Daten eingelesen sind. Zumden werden diese ja auch teilweise im RAM gehalten.
Ich denke das wird MapsForge nicht unerstützen.

Ich sehe 2 Workarounds:

  1. Externe SD die groß genug ist. (von wie viel GB sprechen wir, om worst-case OTG)
    1.5 Beispiel nachschauen wie es andere Apps mit MapsForge machen?
  2. Kleinere Häppchen machen, damit du nicht so viel Speicher brauchst.
    z.b. CustomMaps erstellen die einen bestimmten Bereich abdecken oder einzelne Bundesländer laden:
    https://download.mapsforge.org/maps/v4/europe/germany/

— geändert am 13.04.2020, 18:18:20

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Wicki11
  • Forum-Beiträge: 103

14.04.2020, 19:08:23 via Website

Hallo Pascal,
die Workaround-Variante 2 (Bundesland laden) habe ich momentan schon in meiner App. Wenn aber der Weg über das Bundesland hinaus ins benachbarte führt dann fehlt das zugehörige Kartenmaterial. Ideal wäre die Angabe mehrerer Quellen (Bundesländer), aber ob das möglich ist ?
Gruß Wicki

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.04.2020, 11:25:32 via Website

Du musst nur mal genauer hinschauen ;)

Mapsforge bietet auch an mehrere Dateien zu laden:
https://github.com/osmdroid/osmdroid/blob/master/OpenStreetMapViewer/src/main/java/org/osmdroid/samplefragments/tileproviders/MapsforgeTileProviderSample.java
Siehe addOverlays Methode und findFiles :)

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Wicki11
Kommentieren
Wicki11
  • Forum-Beiträge: 103

15.04.2020, 18:58:09 via Website

Hallo Pascal,
vielen Dank für den Hinweis, er sieht erfolgversprechend aus. Ich werde ihn demnächst ausprobieren, wenn ich mal wieder eine Fahrradtour ins benachbarte Bundesland mache.
Gruß Wicki

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.04.2020, 19:06:05 via Website

Eine Route kannst du doch auch zuhause ausprobieren.
Zur Not mit simuliertem GPS

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Beste Antwort
Wicki11
  • Forum-Beiträge: 103

17.04.2020, 15:28:10 via Website

Hallo Pascal,
Habe mir MapsforgeTileProviderSample.java angesehen. Ist ziemlich kompliziert, habe bspw. keine Definition von mMapView gefunden und die Integration in meine App würde wahrscheinlich sehr schwierig.
Habe eine andere Möglichkeit gefunden:
man kann eine eigene map-Karte nach eigenen Vorgaben generieren lassen auf der Website https://extract.bbbike.org/
das hat bei mir gut geklappt und die Karte passt auch größenmäßig auf mein Smartphone.
Gruß Wicki

Hilfreich?
Kommentieren