Wie kann ich den Screenshot von Google map v2 und das Layout von xml programmatisch erstellen / zusammenführen?

8

Ich mache einen Screenshot von Google Map v2 , indem ich den entsprechenden Code verwende Antwort , die mir die Ausgabe gibt:

Was ist gut, um Screenshot von Map

zu machen

Mit folgendem Code kann ich den Screenshot von Layout mit schwarzem Kartenbildschirm machen  das ist ok wie mit folgendem Code Map wird in ScreenShot schwarz

%Vor%

Ausgabe des obigen Codes:

Was ich eigentlich brauche, ist:

Also, jetzt meine Frage, wie kann man die Ausgabe wie in 3. Screen programmatically ?

bekommen

Helfen Sie mir, einen Screenshot zu machen, indem Sie beide (1 und 2) zusammenfügen programmatically ?

oder eine andere Alternative, um beide Bilder programmatically zusammenzuführen, nachdem Sie beide (1 und 2) Screenshots gemacht haben?

    
Tarsem Singh 19.08.2013, 08:41
quelle

2 Antworten

17

Rufen Sie die folgende Methode auf, um den Screenshot mit Karte zu erstellen:

%Vor%

mview ist die Stammansicht Ihres Layouts und mMap ist Ihr Kartenfragment.

Stellen Sie sicher, dass Sie die neueste Google Play Services API haben.

%Vor%

Überspringen Sie diese Zeilen und verwenden Sie snapshot.compress(Bitmap.CompressFormat.PNG, 90, out); , wenn Sie nur den Screenshot der Karte möchten.

    
JiTHiN 22.08.2013, 05:54
quelle
0

Ich kenne die Android-API nicht, aber da Sie "alternative" Methoden angefordert haben, schlage ich vor, ImageMagick . Auf dieser Seite gibt es mehrere Binärdateien, also hoffe ich, dass Sie eine herunterladen können, die zu Ihrem System passt. Sonst können Sie die Quellen herunterladen (google herum und Sie finden viele Links über den Aufbau für Android).

Da ich auf einem Windows-Rechner arbeite, kann ich Ihnen nur sagen, wie Sie ihn von der Windows-Befehlszeile aus aufrufen können, aber die Syntax ist für andere Plattformen ähnlich. Diese App hat auch eine große Auswahl an APIs für verschiedene Sprachen (insbesondere Java, C oder C ++ könnte für Sie von Interesse sein), so dass Sie ImageMagick in Ihre Anwendung eingebettet verwenden können, anstatt es über die Befehlszeile aufzurufen.

>

Nun zum Problem: Die Operation, die Sie ausführen müssen, besteht darin, das "Overlay-Blatt" mit Symbolen über Ihrer Karte zu platzieren, wie Sie es mit einem transparenten Blatt mit Zeichnungen über einer echten Karte tun würden.

Lassen Sie uns also map.png und overlay.png die beiden zusammenzuführenden Dateien nennen. Beachten Sie, dass auch die Überlagerungsdatei eine PNG-Datei ist (mehr dazu später). Dann können Sie mit dem folgenden Befehlszeilenaufruf etwas erreichen, was Ihren Wünschen entspricht:

%Vor%

Warum muss das Overlay auch ein PNG-Bild sein? Das liegt daran, dass wir ein "Overlay-Sheet" benötigen, das in den meisten Bereichen transparent ist (außer wenn Sie die Ballonspitze und die anderen Zeichnungen haben), JPG-Bilder jedoch nicht die Transparenzinformationen speichern (sie haben keinen Alpha-Kanal, welche diese Information speichert).

Sie sollten also den Teil des Codes ändern, der das Overlay generiert, um ein PNG-Bild mit einem geeigneten Alphakanal zu erzeugen.

Hoffe, das alles hilft.

    
Lorenzo Donati 21.08.2013 23:37
quelle