Kamera ist nicht speichern, nachdem die Aufnahme von Bild
Ich kann eine Taste drücken, öffnen Sie die native Kamera-app, und erfolgreich ein Bild machen. Aber wenn ich dann schauen Sie sich die Galerie oder Fotos native apps auf meinem Handy, das Bild ist nicht dort gespeichert. Ich bin sehr neu in Android, so ist es wahrscheinlich, ich bin fehlt etwas wichtiges in meinem code.
Fragen:
1) Wo sind diese Bilder gespeichert?
2) Kann ich ändern Sie den code unten irgendwie zu speichern, statt in den internen Speicher, so dass alle Bilder aufgenommen mit meiner app sind privat und nur zugänglich durch meine app?
3.) Wenn ich speichern wollte diese Bilder zu einem Objekt, zusammen mit einigen text/anderen input, was wäre der beste Weg? Sollte ich einfach sparen Uri
oder um eine id für die Referenz Bild später, oder speichern Sie die aktuelle BitMap
Bild?
Jede Hilfe wird sehr geschätzt, Dank!
Hier ist mein code, um das Bild aufzunehmen:
mImageButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = CameraUtils.getOutputMediaFileUri(CameraUtils.MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, REQUEST_IMAGE);
}
}
CameraUtils
Klasse gerade von Google developer guides:
public static Uri getOutputMediaFileUri(int type)
{
return Uri.fromFile(getOutputMediaFile(type));
}
public static File getOutputMediaFile(int type)
{
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "camera");
if (!mediaStorageDir.exists())
{
if (!mediaStorageDir.mkdirs())
{
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE)
{
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"IMG_" + timeStamp + ".jpg");
}
else if(type == MEDIA_TYPE_VIDEO)
{
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"VID_" + timeStamp + ".mp4");
}
else
{
return null;
}
return mediaFile;
}
InformationsquelleAutor pez | 2014-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
1) suchen Sie in der code, den ich erwarten würde, die Bilder werden gespeichert in einem Verzeichnis namens 'Kamera', die in den Bilder-Ordner auf Ihrem Gerät (externer Speicher). Könnten diese nicht sofort erscheinen in deiner Galerie, aber in späteren Versionen von Android (Kitkat und vielleicht jelly-bean kann ich zwar nicht überprüfen, dass es jetzt) Sie sollten in der Lage sein öffnen Sie die Fotos app und Sie finden irgendwo in dort. Wenn das nicht der Fall, dann starten Sie eine Datei-explorer app (Beispiel apps-ASTRO Datei-Manager oder X-Plore) und navigieren Sie zu den Bildern/Kamera-Verzeichnis, wo Sie sollten sehen Sie Ihre Bilder. Das nächste mal, wenn Ihr Medien wird neu indiziert (Handy Neustart oder ein re-index, ausgelöst von anderswo), sollten Sie diese Bilder in der Galerie/Foto apps. Wenn Sie möchten, zu aktualisieren Sie Ihre media-ein Programm, hier helfen könnte. Schließlich, stellen Sie sicher, dass Sie die READ_EXTERNAL_STORAGE-Berechtigung im Android manifest angegeben diesem (Android doc).
2) Wenn Sie möchten, speichern Sie Bilder, die nur für die Anwendung zur Verfügung, die Sie benötigen, um Sie zu speichern, um Ihre Anwendung, die internen Daten-Verzeichnis. Werfen Sie einen Blick auf diesem direkt aus der Android-Dok. Stellen Sie sicher, dass Sie die MODE_PRIVATE Flagge.
3) Für diese, Sie würden wollen, speichern Sie die Datei Pfad irgendwo zugänglich für Ihre app. Entweder speichern Sie Ihre Datei Pfade in eine text-Datei mit einigen anderen text-Daten, oder verwenden Sie eine sqlite-Datenbank. Schließlich können Sie mit einem ORM wie ORMLite für Android zum speichern von java-Objekt, die möglicherweise enthalten die Daten für Ihr Bild und haben einige Felder sollen beibehalten werden (Titel, Beschreibung, Pfad, usw). Hier und hier ist ein intro, wie man mit dem SQLite database in Android (direkt von der offiziellen doc). Wenn Sie verwenden möchten, ORMLite, es gibt jede Menge Informationen auf Ihrer Website hier. Der Entwickler hat verbrachte viel Zeit mit der Beantwortung von StackOverflow Fragen..
Alle Ihre Fragen beantwortet werden können mit ein paar einfachen Google-Suche. Sie sind sehr standard und grundlegende Dinge zu tun in Android, so dass Sie sollten in der Lage sein zu finden, eine fülle von Informationen und tutorials online.
BEARBEITEN:
In Antwort auf Ihren Kommentar über die zweite Frage. Dies ist, was würde ich wohl tun (oder so ähnlich):
Beachten Sie, dass ich nicht getestet. Es ist aus der Spitze von meinem Kopf. Wenn Sie mehr Probleme haben, Kommentar hier!
Tätigkeit code...
CameraUtils Klasse code...
So, jetzt haben Sie den Pfad, der auf Ihre intern gespeicherten Bild, das Sie dann Bearbeiten/laden von Ihrem onActivityResult.
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Sie brauchen wirklich nur die schreiben die Berechtigung zum speichern von Bildern (wie auch der Kamera-Funktion, die ich glaube). Aber in der Regel das Lesen ist ebenso enthalten, da Sie wahrscheinlich werden es brauchen.Ah ich glaube ich weiß was das problem ist. Dumm von mir, für, nicht ahnend, dass dies früher. Was passiert, ist, dass die Kamera-app nicht speichern, um Ihren internen URIs (es kann natürlich nicht..). In meinen apps, ich pass eine uri verweist auf den externen Speicher in die Kamera Vorsatz (wie Sie früher Taten), und dann in meine onActivityResult, ich öffne die Datei und speichern Sie es auf meine app-interne Ordner mit grundlegenden java-IO. Ich werde meine Antwort Bearbeiten
Bezüglich Berechtigungen, brauchen Sie nicht Kamera-Berechtigung zu verwenden MediaStore.ACTION_IMAGE_CAPTURE Absicht.
Du hast Recht. Ich war falsch mit diesem Kommentar, habe einige Tests und das Lesen von meinen eigenen, und verwirklichen Sie diese jetzt. Danke!
Ja sorry, ich vergaß, um die änderung in der onClick-Methode.
InformationsquelleAutor maraci