2016-04-11 9 views
2

Ich mache einige Experimente mit der MediaStore-Klasse und speichere meine Bilder und Videos mit benutzerdefinierten Daten, um sie später zu lesen. Es funktioniert gut, ich finde den Weg, um die Parameter zu meinen Medienelementen zu setzen und sie in meinem Telefon lesen zu können.Warum werden meine Bild-/Video-Metadaten gelöscht? Wie kann ich benutzerdefinierte Informationen in meinen Dateien speichern?

Wenn ich zum Beispiel ein Video in fastmotion aufnehme und die Informationen speichere, damit meine App weiß, dass es ein Fastmotion-Video ist, um einige benutzerdefinierte UI-Inhalte zu erstellen, füge ich einen Text in mein Feld MediaStore.Images.ImageColumns.DESCRIPTION ein.

Es funktioniert gut, aber wenn ich meine Datei auf dem Computer zu kopieren, oder anderes Telefon, und ich versuche erneut, um die Metadaten zu lesen, alles ist leer least:

MediaStore.Images.ImageColumns.TITLE 
MediaStore.Images.ImageColumns.ORIENTATION 
MediaStore.Images.ImageColumns.MIME_TYPE 

Wie kann dies vermeiden? Haben Sie eine andere Idee, eine benutzerdefinierte Information in meinen Dateien zu speichern, um sie später mit einer anderen Anwendung zu lesen?

Gerade jetzt im, Speichern dieser Daten:

static final String[] QUERY_PROJECTION = { 
      MediaStore.Images.ImageColumns._ID,   // 0, int 
      MediaStore.Images.ImageColumns.TITLE,   // 1, string 
      MediaStore.Images.ImageColumns.MIME_TYPE,  // 2, string 
      MediaStore.Images.ImageColumns.DATE_TAKEN, // 3, int 
      MediaStore.Images.ImageColumns.DATE_MODIFIED, // 4, int 
      MediaStore.Images.ImageColumns.DATA,   // 5, string 
      MediaStore.Images.ImageColumns.ORIENTATION, // 6, int, 0, 90, 180, 270 
      MediaStore.Images.ImageColumns.WIDTH,   // 7, int 
      MediaStore.Images.ImageColumns.HEIGHT,  // 8, int 
      MediaStore.Images.ImageColumns.SIZE,   // 9, long 
      MediaStore.Images.ImageColumns.LATITUDE,  // 10, double 
      MediaStore.Images.ImageColumns.LONGITUDE  // 11, double 
      MediaStore.Images.ImageColumns.DESCRIPTION // 12, String 
    }; 

Wenn jemand eine andere Möglichkeit haben, zusätzliche Informationen in den Dateien zu speichern, es zu lesen später werde ich so dankbar sein! Ich freue mich auf Ihre Antworten, vielen Dank!

Antwort

1

Ich füge einen Text in mein MediaStore.Images.ImageColumns.DESCRIPTION Feld.

Dies fügt einen Wert in einer Datenbank hinzu. Es ändert nicht dein Video.

Es funktioniert gut, aber wenn ich meine Datei auf dem Computer zu kopieren, oder anderes Telefon, und ich versuche erneut, um die Metadaten zu lesen, alles ist leer

Die Daten in MediaStore nicht irgendwie gefüllt in die Datei. Wenn Sie beispielsweise den Wert in der Spalte DESCRIPTION in MediaStore für eine Textdatei (.txt) festlegen, wird der Text in dieser Datei nicht irgendwie so geändert, dass er DESCRIPTION enthält.

Haben Sie eine andere Idee, eine benutzerdefinierte Information in meinen Dateien zu speichern, um sie später mit einer anderen Anwendung zu lesen?

Ändern Sie Ihre Datei, um Ihre gewünschten Informationen zu enthalten.

+0

und wie kann ich es ändern? Ich habe versucht, die Exif meiner Video/Bild zu ändern, aber es funktioniert nicht –

+0

@FranciscoDurdinGarcia: Ich würde vorschlagen, dass Sie eine separate Stack Overflow-Frage öffnen, wo Sie den Code, wo Sie die EXIF-Header ändern und erklären, im Detail, Welche spezifischen Symptome sind von "funktioniert nicht" impliziert. – CommonsWare