Android-Kamera - Bild Speichern in einem neuen Ordner in SD-Karte
Habe ich eine sehr einfache APP, die im moment nimmt ein Bild und speichert anschließend das Bild. Das problem im moment ist, dass aus irgendeinem Grund kann ich nicht finden, wo das Bild gespeichert wird, um auf das Telefon.
Das fertige Ergebnis mit dem, was ich versuche zu tun ist, wenn ein Bild nahm das Bild dann gespeichert wird in einen neuen Ordner, die erstellt wurde, auf der SD-Karte, aber wenn der Ordner nicht bereits vorhanden ist, wird es gemacht werden (automaticlly), bevor das Bild gespeichert werden kann.
Habe ich versucht, die Antwort in dieser Frage aber kann nicht scheinen zu incoporate es ohne immer der Fehler imageIntent cannot be resolved
EDIT: Bild jetzt speichern in die SD-Karte und erstellen Ordner, sondern überschreibt das Vorherige Bild, ich brauche es, um mehrere Bilder wenn jemand hat irgendwelche Vorschläge, code wurde aktualisiert,
Dies ist ein Ausschnitt von meinem code:
PictureCallback myPictureCallback_JPG = new PictureCallback(){
public void onPictureTaken(byte[] arg0, Camera arg1) {
//TODO Auto-generated method stub
/*Bitmap bitmapPicture
= BitmapFactory.decodeByteArray(arg0, 0, arg0.length); */
int imageNum = 0;
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "Punch");
imagesFolder.mkdirs(); //<----
String fileName = "image_" + String.valueOf(imageNum) + ".jpg";
File output = new File(imagesFolder, fileName);
while (output.exists()){
imageNum++;
fileName = "image_" + String.valueOf(imageNum) + ".jpg";
output = new File(imagesFolder, fileName);
}
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
imageFileOS.write(arg0);
imageFileOS.flush();
imageFileOS.close();
Toast.makeText(AndroidCamera.this,
"Image saved: ",
Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
camera.startPreview();
}};
BEARBEITEN
Code wurde aktualisiert, um nun speichern mehrerer Bilder in einem neu erstellten Ordner auf der SD-Karte.
InformationsquelleAutor Matt | 2011-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie speichern mehrere Bild. haben Sie einen Fehler jedes mal, wenn Sie die Erfassung der Foto-Ordner ist die Neuerstellung wieder und wieder.
so müssen Sie überprüfen, ob der Ordner bereits existiert oder nicht. Sie müssen nur eine Zeile code
InformationsquelleAutor
Ich bin rein RATEN vergessen Sie den erforderlichen code aus der Frage Teil, was du verlinkt wird.
Die Frage ist die folgende Zeile an der Spitze:
Wenn Sie gerade kopiert den code aus der Antwort -, dann hätten Sie diesen Fehler, da der code in der Antwort nicht enthalten ist die Instanziierung von
imageIntent
.Lassen Sie mich wissen, wenn Sie brauchen nichts weiter oder wenn ich mich gerade völlig falsch.
UPDATE (in Bezug auf Bild überschrieben wird):
Sind Sie derzeit mit
"image_001.jpg"
als string für den Namen des Bildes.Legen Sie eine variable innerhalb Ihrer Klasse
int imageNum = 0;
Dann müssen Sie mit einer while-Schleife und erhöhen Sie die Bild-Nummer, oder Sie können einen anderen Namen für das Bild basierend auf der Zeit - das ist ein weiterer Weg, es zu tun.
Den obigen code - zwar nicht persönlich getestet - funktionieren sollte.
Update, Hinzugefügt, int imageNum = 0; alles funktioniert jetzt.
Ja. Der code, den ich oben gepostet ersetzen sollte, wie Sie gerade erstellen Sie die Datei mit
File image = new File(imagesFolder, "image_001.jpg");
. In Ihrer Klasse Körper (wie Sie außerhalb von Methoden), müssen Sieint imageNum = 0;
, und dann den code, den ich oben gepostet funktionieren sollte. Wenn das nicht fix es, welche Fehler sind Sie immer?Aktualisierte Frage zu zeigen, fix, danke.
InformationsquelleAutor Reed
dies funktioniert nicht bei android 4.4. die Absicht, in onActivityForResult null ist. Hat sich etwas ändern in Android?
InformationsquelleAutor Prasanna Yerramsetti