X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/d05d7361fff3b8b7e1ea4d48d0f2488f55aab771..0d6320aa792b7e49b410f5582b84acbce2fc362a:/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java diff --git a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index 41a0d8b6..bf62a23c 100644 --- a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -29,8 +29,10 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.graphics.BitmapFactory; +import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.media.ExifInterface; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.AsyncTask; @@ -188,7 +190,7 @@ public class ThumbnailsCacheManager { public static ThumbnailLocalGenerationTask getBitmapLocalWorkerTask(ImageView imageView) { if (imageView != null) { final Drawable drawable = imageView.getDrawable(); - if (drawable instanceof AsyncDrawable) { + if (drawable instanceof AsyncLocalDrawable) { final AsyncLocalDrawable asyncDrawable = (AsyncLocalDrawable) drawable; return asyncDrawable.getBitmapWorkerTask(); } @@ -197,12 +199,12 @@ public class ThumbnailsCacheManager { } public static class ThumbnailLocalGenerationTask extends AsyncTask { - private final WeakReference mImageViewReference; + private final WeakReference mImageViewLocalReference; private File mFile; public ThumbnailLocalGenerationTask(ImageView imageView) { // Use a WeakReference to ensure the ImageView can be garbage collected - mImageViewReference = new WeakReference(imageView); + mImageViewLocalReference = new WeakReference(imageView); } // Decode image in background. @@ -251,8 +253,8 @@ public class ThumbnailsCacheManager { bitmap = null; } - if (mImageViewReference != null && bitmap != null) { - final ImageView imageView = mImageViewReference.get(); + if (mImageViewLocalReference != null && bitmap != null) { + final ImageView imageView = mImageViewLocalReference.get(); final ThumbnailLocalGenerationTask bitmapWorkerTask = getBitmapLocalWorkerTask(imageView); if (this == bitmapWorkerTask && imageView != null) { if (imageView.getTag().equals(mFile.hashCode())) { @@ -312,6 +314,9 @@ public class ThumbnailsCacheManager { if (bitmap != null) { thumbnail = ThumbnailUtils.extractThumbnail(bitmap, px, px); + + // Rotate image, obeying exif tag + thumbnail = BitmapUtils.rotateImage(thumbnail, mFile.getStoragePath()); // Add thumbnail to cache addBitmapToCache(imageKey, thumbnail); @@ -401,16 +406,16 @@ public class ThumbnailsCacheManager { } public static class AsyncLocalDrawable extends BitmapDrawable { - private final WeakReference bitmapWorkerTaskReference; + private final WeakReference bitmapWorkerLocalTaskReference; public AsyncLocalDrawable(Resources res, Bitmap bitmap, ThumbnailLocalGenerationTask bitmapWorkerTask) { super(res, bitmap); - bitmapWorkerTaskReference = + bitmapWorkerLocalTaskReference = new WeakReference(bitmapWorkerTask); } public ThumbnailLocalGenerationTask getBitmapWorkerTask() { - return bitmapWorkerTaskReference.get(); + return bitmapWorkerLocalTaskReference.get(); } } @@ -427,5 +432,5 @@ public class ThumbnailsCacheManager { mThumbnailsDiskCacheLock.notifyAll(); // Wake any waiting threads } } - + }