2013-08-06 23 views
6

Ich mache einen Dateimanager, in dem Bildelemente ein kleines Thumbnail haben.Thumbnail wird nicht sofort aktualisiert

Ich bekomme ein Vorschaubild mit MediaStore. Alles funktioniert gut. Aber wenn ich eine Datei umbenenne oder verschiebe, wird das Thumbnail nicht angezeigt.

Ich habe ein Stück Code gefunden MediaStore aufzufrischen:

getActivity().sendBroadcast(
    new Intent(Intent.ACTION_MEDIA_MOUNTED, 
      Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

Es funktionierte, aber ich muss 4 oder 5 Sekunden warten und aktualisieren, dann die Miniatur Updates.

Wie erhalten Sie ein Vorschaubild des Bildes unmittelbar nach dem Umbenennen oder Verschieben?

+0

geben Sie es in einem Thread ......... – Exceptional

Antwort

0

Haben Sie versucht, den Scan direkt in dem Verzeichnis durchzuführen, das Sie ändern? Anstatt also

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

so etwas wie

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/path/to/your/folder"))); 

Eine Alternative wäre manuell ThumbnailUtils zu verwenden.

2

Was passiert, wenn Sie ACTION_MEDIA_SCANNER_SCAN_FILE anstelle von ACTION_MEDIA_MOUNTED verwenden (d. H. Eine Aktualisierung für eine einzelne Datei statt für die vollständige Verzeichnishierarchie auslösen)?

Sie müssen den URI des Verzeichnisses mit dem URI der Datei ersetzen, erhalten zum Beispiel Uri.fromFile() verwenden.

Wenn Sie eine Datei verschieben oder umbenennen, sollten Sie die alten und die neuen URIs aktualisieren.

1

Die empfohlene Methode zum Aktualisieren eines bestimmten Abbilds in Android verwendet ACTION_MEDIA_SCANNER_SCAN_FILE intent. Und für glatter

Sie können es bei Basic Photo Handling Training in Android Developer Site überprüfen.

Wenn Sie für einige fehlende Dateien sofort ein neues Miniaturbild anzeigen möchten, können Sie dies selbst tun. Überprüfen Sie zuerst den MediaStore wie zuvor, und wenn das zurückgegebene Thumbnail Null ist, generieren Sie Ihren eigenen mit ThumbnailUtils oder BitmapFactory.

und für eine Bitmap-Handhabung und es anzeigt, gibt es eine ruhige straightforward sample in Android Training Course.