2017-03-27 4 views
0

Ich habe gesucht und einige verschiedene Lösungen für dieses Problem, aber keiner von ihnen sind wirklich, was ich suche.Wie man auf ein Foto SOFORT nach der Einnahme, dann Speichern im Speicher

Ich entwickle eine Anwendung, die als so ...

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

durch Öffnen der Kamera über eine MediaStore.ACTION_IMAGE_CAPTURE Intent der Benutzer nehmen ein Bild lässt und speichert dann das Bild mit

File photo = new File(Environment.getExternalStorageDirectory(), titleOfPhoto + ".jpg"); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 

Ich bekomme sogar das Thumbnail zurück und zeige es dem Benutzer in onActivityResult() Override an.

Wie der Titel schon sagt, möchte ich dem Benutzer erlauben, sofort nach der Aufnahme auf das aufgenommene Bild zu zeichnen. Aber ich habe keine Kontrolle darüber, was zwischen dem Öffnen der Kamera und dem Zurückkehren zu meiner App mit dem bereits gespeicherten Bild passiert. Apps wie Snapchat und WhatsApp tut genau dies und vieles mehr, so dass ich weiß, dass es möglich ist, aber Android erscheint nicht in dieser Fähigkeit gebaut hat

Um klar zu sein. Die Abfolge der Ereignisse muss seine

1) Öffnen Sie die Kamera

2) Nehmen Sie ein Bild

3) zeichnen Sie auf das Bild

4) Drücken Sie auf 'OK'/'Fertig' oder etwas

Speichern

5) das bearbeitete Foto

6) Zurück Thumbnail

Gibt es trotzdem ein Ereignis-Listener, um die Kamera an, oder öffnen Sie die Kamera auf eine andere Weise, die mehr Kontrolle gibt? Jede Hilfe wird geschätzt! Vielen Dank!

Antwort

1

Um dies zu tun, müssen Sie die Camera Framwork API verwenden.

Der Grund dafür ist, dass die Kamera in einer Oberflächenansicht in Ihrer App ausgegeben wird. Wenn der Benutzer ein Bild macht, erfassen Sie den Zustand der Oberflächenansicht. Von dort können Sie Ihren Benutzern erlauben, auf dem Bild zu zeichnen. Wenn sie fertig sind, DANN speichern Sie das Bild und zeigen Sie sein Thumbnail an.

+0

Diese Framework-API wird viel helfen, vielen Dank! Aber einige der Beispielcode für diesen Artikel ist schwer zu meinen Zwecken zu konvertieren. Können Sie einige Beispielcode-Snippets bereitstellen, um die Lücken zu füllen? Zum Beispiel: Wie manipuliere ich das SurfaceHolder-Objekt, nachdem das Foto aufgenommen wurde? Wie füge ich eine Zeichenfunktion hinzu? –

+0

Ich habe keine Code-Snippets, aber von Anfang an würde ich eine klare Leinwandansicht über Ihre SurfaceView hinzufügen und dem Benutzer erlauben, darauf zu zeichnen. Es würde es so aussehen lassen, als würde es auf dem Bild zeichnen. Ich weiß nicht, wie das so weit gehen wird, das zusammengefügte Segeltuch und das Bild zu speichern, aber es könnte ein Anfang sein. All die Arbeit, die ich dafür getan habe, war mit Video, daher weiß ich leider nicht viel über Bilderfassung. – Jlange

Verwandte Themen