2016-07-13 20 views
1

Erstellen einer Bildergalerie Ich stehe vor einem seltsamen Problem. Ich Abfrage für die Bilder eines Albums wie folgt aus:Android - ThumbnailUtils.getThumbnail gibt ein falsches Bild zurück

String sortBy=MediaStore.Images.Media.DATE_MODIFIED+" desc"; 
String selection=MediaStore.Images.Media.DATA +" like?";  
String[] selectionArgs=new String[]{"%"+folderPath+"%"}; 
String[] projection = {MediaStore.Images.Media._ID,MediaStore.Images.Media.DATA,MediaStore.Images.Media.DATE_MODIFIED,MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME}; 
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, sortBy); 

Danach beginne ich die Bilder für alle IDs ich aus der Abfrage bekam zu sammeln. Ich hole eine Bitmap für eine bestimmte Bild-ID wie folgt:

In den meisten Geräten funktioniert es gut. Heute habe ich ein Xiaomi Redmi 3 Gerät getestet, das fast immer das gleiche Thumbnail liefert. Wenn also ein Album 200 Bilder hat, bekomme ich ein oder zwei richtig und der Rest ist das gleiche genaue Bild.

Aber wenn ich MINI_KIND Thumbnails anfordere, kommen sie alle gut zurück.

Was verursacht dies und wie kann ich es umgehen?

Die großen Vorschaubild (MINI_KIND) gespeichert sind in DCIM/.thumbnails/*.jpg:

+0

Das gleiche Problem hier auf einem Nexus 5 mit CyanogenMod 14.1 (nächtlichen Build). – MaxGyver

+0

Ich vermute, es ist ein Fehler, der nicht vermieden werden kann, also habe ich MINI_KIND verwendet und die Größe der Bitmaps später in MICRO_KIND geändert Größe – Anonymous

+0

Leider ist MINI_KIND viel langsamer. Es wäre schön, wenn ein MICRO_KIND-Thumbnail einen Fehler verursacht, also könnte ich dies zuerst versuchen und dann nur ein MINI_KIND-Thumbnail laden, falls nötig. – MaxGyver

Antwort

0

Ich habe die Lösung für unser Problem gefunden. Die kleinen Vorschaubilder (MICRO_KIND) werden in DCIM/.thumbnails/.thumbdata* und .thumbindex* gespeichert. Nachdem ich die Dateien gelöscht habe, die mit .thumbdata und .thumbindex beginnen, konnte meine App die korrekten MICRO_KIND Thumbnails abrufen. Das erste Mal ist es langsam, da Thumbnails neu erstellt werden müssen. Anscheinend waren die alten Thumbnail-Dateien beschädigt.

+0

Ja, ich weiß das ... aber es ist keine Lösung, wenn der Benutzer diesen Ordner manuell löschen muss. Übrigens zeigten die Standard-Galerie-App und einige heruntergeladene Galerie-Apps das korrekte Thumbnail. Ich sehe keine andere Möglichkeit, das zu tun, wenn ich nicht den MINI_KIND benutze ... – Anonymous

Verwandte Themen