Probleme beim speichern eines Fotos zu einer Datei
Mann, ich bin noch nicht in der Lage, um ein Bild zu speichern, wenn ich eine E-Absicht Fragen, für ein Foto genommen zu werden. Hier ist, was ich Tue:
-
Machen einen URI repräsentiert den Pfadnamen
android.content.Context c = getApplicationContext(); String fname = c.getFilesDir().getAbsolutePath()+"/parked.jpg"; java.io.File file = new java.io.File( fname ); Uri fileUri = Uri.fromFile(file);
-
Erstellen der Absicht, (nicht zu vergessen die pkg-name!) Beginn der Aktivität
private static int TAKE_PICTURE = 22; Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE ); intent.putExtra("com.droidstogo.boom1." + MediaStore.EXTRA_OUTPUT, fileUri); startActivityForResult( intent, TAKE_PICTURE );
-
Die die Aktivität der Kamera beginnt, und ich kann ein Foto machen, und es genehmigen. Meine
onActivityResult()
dann aufgerufen wird. Aber meine Datei nicht geschrieben wird.
Die URI ist: file:///data/data/com.droidstogo.boom1/files/parked.jpg -
Kann ich erstellen thumbnail-OK (indem Sie nicht die extra in der Absicht), und kann schreiben, dass die Datei OK ist, und Las es später zurück).
Kann jemand erkennen, welche einfachen Fehler, den ich mache? Nichts offensichtlich zeigt sich in der logcat - die Kamera ist deutlich unter dem Bild. Danke,
Peter
Sollte ich erwähnen, dass ich die entsprechenden Berechtigungen festgelegt in der AndroidManifest.xml Datei:
<uses-permission android:name="android.permission.READ_OWNER_DATA" />
<uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-library android:name="com.google.android.maps" />
</application>
Irgendwelche Ideen? Irgendwelche Ideen auf, Dinge zu versuchen, um mehr Infos zu bekommen über das problem?
- Vielleicht question helfen können.
- kann u bitte fügen Sie einige code für ein besseres Verständnis des Problems
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Steve H gesagt, Sie können nicht nur verwenden file:///data/data/com.droidstogo.boom1/files/parked.jpg für, die. Es ist Ihre Anwendung private Verzeichnis und die Kamera kann nicht dort zu schreiben. Sie können einige SD-card-Datei für das Beispiel - es ist für alle verfügbar.
Als stealthcopter sagte, die Absicht ist extra nur MediaStore.EXTRA_OUTPUT ohne Ihrem Paket-Namen.
Nicht ein Problem, nur zur info. Ich denke, keiner von den Berechtigungen, die Sie angegeben, tatsächlich sind für diesen Vorgang erforderlich.
Hier ist mein code-Beispiel:
Ist es, weil Sie Hinzugefügt haben, ein extra-Punkt:
Statt:
Dein problem könnte sein mit dem Verzeichnis, das Sie versuchen die Datei gespeichert in. Speichern von Dateien auf der SD-Karte, die Sie brauchen keine speziellen Berechtigungen haben, aber die Art und Weise erhalten Sie die Ordner-Verweis ist anders, wie du das gemacht hast. Es hängt auch davon ab, ob Sie möchten, speichern Sie das Bild in einer Weise, die abgerufen werden können durch die MediaStore (also Dinge wie die Galerie oder Alben-Anwendung, oder jede andere app, die sich auf diejenigen Bilder zu finden) oder nicht. Vorausgesetzt, Sie wollen, dass es im MediaStore, hier ist der code dazu:
Auf meinem emulator läuft v1.5, das erfolgreich, speichert ein bitmap auf der SD Karte im DCIM/Kamera-Ordner mit Datei-name, aktuelle Zeit. (Die Zeit, die gespeichert wird in Millisekunden seit dem 1. Januar 1970, auch bekannt als die "Epoche" für einige Grund.)
Als Steve sagte, sollten Sie Ihr Bild in SD-Karte. Das Verzeichnis, in dem Sie versuchen, zu speichern ist privat und es sei denn, Sie haben Sie Ihr Gerät verwurzelt, Sie können nicht schreiben, es.
Versuchen Sie, ersetzen Sie diese Zeile:
mit dieser Linie
Dies sollte genug sein.