Android - Fotos aufnehmen und mit einem benutzerdefinierten Namen über die Absicht in einem benutzerdefinierten Ziel speichern

8

Ich habe ein Programm, das die Kamera über Intent öffnet, um ein Foto zu machen. So viel Teil funktioniert schon gut. Ich möchte es jedoch in einem bestimmten Ordner mit einem bestimmten Dateinamen speichern (der Dateiname ist optional, aber es würde wirklich wirklich helfen).

Also hier ist was ich bisher habe.

Hier ist die Codezeile, die die Kamera öffnet:

%Vor%

Ergebnishandler geht hier:

%Vor%

Bevor ich die beiden folgenden Methoden implementierte, funktionierte der Code einwandfrei. Es wurde jedoch im Standardordner mit dem Standarddateinamen (der Zeitstempelversion) gespeichert. Der Toast zeigte "Gespeichert in: null", da ich diesen Teil noch nicht eingestellt habe.

Hier sind also die Methoden, die den benutzerdefinierten Dateinamen und das Ziel

verarbeiten sollten %Vor%

* Diese Codes wurden aus dem Camera Guide von developer.android.com entfernt.

Der obige Code schafft es, die Kamera zu öffnen und Fotos aufzunehmen und zu speichern. Das Problem tritt jedoch auf, wenn der Benutzer die Aufnahme von Fotos aufhebt und die Zurück-Taste drückt. Was passiert, ist, dass sich die App-Force schließt, was diesen Fehler verursacht:

%Vor%

Die Linie, auf die es zeigt, wäre diese Linie (Zeile 379): data.getData(), Toast.LENGTH_LONG

Die Dateien werden jedoch im Ordner /Pictures/MyCameraApp zusammen mit den Instagram-Fotos gespeichert.

Also sind die Fragen: 1. Gibt es eine Möglichkeit, onActivityResult ordnungsgemäß zu arbeiten? Ich weiß, ich kann nur auf StartActivity zurückgreifen, um die App nicht zu töten. 2. Gibt es eine Möglichkeit, nur eine Aufnahme mit der Kamera zu machen? Nachdem der Benutzer das Foto gespeichert hat, kehrt die App zur Hauptaktivität zurück. 3. Kann ich es auch in einem eigenen Ordner speichern? Ich bin mir nicht sicher, warum es die Fotos in /Pictures/MyCameraApp speichert, ich möchte, dass es nur in /MyCameraApp speichert.

Ich denke, ich verpasse hier etwas Einfaches.

    
Razgriz 21.10.2012, 05:13
quelle

3 Antworten

19

Hier ist der Code, der es funktioniert hat:

%Vor%

Er öffnet die Kamera und nimmt genau eine Aufnahme auf (es geht zurück zur Hauptaktivität, nachdem der Benutzer das aufgenommene Bild gespeichert hat. Es speichert das Bild im angegebenen Ordner.

    
Razgriz 25.10.2012, 13:43
quelle
7

Sie können Ihr Foto in Ihrem Ordner bekommen, aber dafür müssen Sie den Dateinamen mit der Absicht unter Verwendung von Code

übergeben %Vor%

Die out-Datei enthält den vollständigen Pfad und den Dateinamen.

Behandle nun die Methode onActivityResult () und überprüfe den Status des Ergebnisses, wenn das Ergebnis RESULT_OK ist, dann benutze den Dateinamen, den du angegeben hast, um auf das Foto zuzugreifen.

Sie können verweisen So erhalten Sie die Kamera Ergebnis als URI im Datenordner? für weitere Optionen.

Bearbeiten

Sie erhalten data.getData() auf null, weil es null ist, wenn Sie die Datei-URL mit der Absicht übergeben. In der Tat haben Sie bereits Dateipfad, den Sie mit der Absicht übergeben, also warum Sie versuchen, es aus dem Bündel in onActivityResult() zu holen?

    
Dharmendra 21.10.2012 05:25
quelle
0

das kann dir helfen

%Vor%     
sachin 14.02.2016 16:00
quelle