diff options
author | Chris Wren <cwren@android.com> | 2012-10-15 14:08:43 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-15 14:08:43 -0700 |
commit | ecc7bc2ef99af63bb1f4449bc6c48ba452543b55 (patch) | |
tree | 1dabc4e73c7f33406ca260c67e2fe00358ffdeb7 | |
parent | 85065ea8a16b22cf53972afdb7d11aae5a2595dc (diff) | |
parent | e8f4d55d6895e1f2bc298ef8978e1aef43ff57c5 (diff) | |
download | PhotoTable-ecc7bc2ef99af63bb1f4449bc6c48ba452543b55.tar.gz |
am e8f4d55d: Be miserly with metered data.
* commit 'e8f4d55d6895e1f2bc298ef8978e1aef43ff57c5':
Be miserly with metered data.
-rw-r--r-- | AndroidManifest.xml | 3 | ||||
-rw-r--r-- | res/values/config.xml | 3 | ||||
-rw-r--r-- | src/com/android/dreams/phototable/PhotoCarousel.java | 1 | ||||
-rw-r--r-- | src/com/android/dreams/phototable/PicasaSource.java | 33 |
4 files changed, 36 insertions, 4 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b721312..412c0f7 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,8 +2,9 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.dreams.phototable" > - <uses-permission android:name="android.permission.WAKE_LOCK" /> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="com.google.android.gallery3d.permission.PICASA_STORE" /> <application diff --git a/res/values/config.xml b/res/values/config.xml index e5dd458..db2b65e 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -79,5 +79,8 @@ <!-- Number of unloadable images to skip before giving up. --> <integer name="bad_image_skip_limit">10</integer> + + <!-- Size of image recycling pool when on metered data. --> + <integer name="recycle_image_pool_size">20</integer> </resources> diff --git a/src/com/android/dreams/phototable/PhotoCarousel.java b/src/com/android/dreams/phototable/PhotoCarousel.java index d03dde0..0c957ab 100644 --- a/src/com/android/dreams/phototable/PhotoCarousel.java +++ b/src/com/android/dreams/phototable/PhotoCarousel.java @@ -232,7 +232,6 @@ public class PhotoCarousel extends FrameLayout { mPanel[1] = findViewById(R.id.back); new PhotoLoadTask(mPanel[0]).execute(); - new PhotoLoadTask(mPanel[1]).execute(); scheduleNext(mDropPeriod); } diff --git a/src/com/android/dreams/phototable/PicasaSource.java b/src/com/android/dreams/phototable/PicasaSource.java index 8a3c751..3a7ca23 100644 --- a/src/com/android/dreams/phototable/PicasaSource.java +++ b/src/com/android/dreams/phototable/PicasaSource.java @@ -18,6 +18,7 @@ package com.android.dreams.phototable; import android.content.Context; import android.content.SharedPreferences; import android.database.Cursor; +import android.net.ConnectivityManager; import android.net.Uri; import android.util.Log; @@ -67,6 +68,9 @@ public class PicasaSource extends PhotoSource { private final String mPostsAlbumName; private final String mUploadsAlbumName; private final String mUnknownAlbumName; + private final LinkedList<ImageData> mRecycleBin; + private final ConnectivityManager mConnectivityManager; + private final int mMaxRecycleSize; private Set<String> mFoundAlbumIds; private int mNextPosition; @@ -79,6 +83,10 @@ public class PicasaSource extends PhotoSource { mPostsAlbumName = mResources.getString(R.string.posts_album_name, "Posts"); mUploadsAlbumName = mResources.getString(R.string.uploads_album_name, "Instant Uploads"); mUnknownAlbumName = mResources.getString(R.string.unknown_album_name, "Unknown"); + mMaxRecycleSize = mResources.getInteger(R.integer.recycle_image_pool_size); + mConnectivityManager = + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + mRecycleBin = new LinkedList<ImageData>(); fillQueue(); } @@ -86,6 +94,16 @@ public class PicasaSource extends PhotoSource { protected Collection<ImageData> findImages(int howMany) { log(TAG, "finding images"); LinkedList<ImageData> foundImages = new LinkedList<ImageData>(); + if (mConnectivityManager.isActiveNetworkMetered()) { + howMany = Math.min(howMany, mMaxRecycleSize); + log(TAG, "METERED: " + howMany); + if (!mRecycleBin.isEmpty()) { + foundImages.addAll(mRecycleBin); + log(TAG, "recycled " + foundImages.size() + " items."); + return foundImages; + } + } + String[] projection = {PICASA_ID, PICASA_URL, PICASA_ROTATION, PICASA_ALBUM_ID}; boolean usePosts = false; LinkedList<String> albumIds = new LinkedList<String>(); @@ -359,8 +377,12 @@ public class PicasaSource extends PhotoSource { .scheme("content") .authority(PICASA_AUTHORITY) .appendPath(PICASA_PHOTO_PATH) - .appendPath(data.id) - .appendQueryParameter(PICASA_TYPE_KEY, PICASA_TYPE_FULL_VALUE); + .appendPath(data.id); + if (mConnectivityManager.isActiveNetworkMetered()) { + photoUriBuilder.appendQueryParameter(PICASA_TYPE_KEY, PICASA_TYPE_SCREEN_VALUE); + } else { + photoUriBuilder.appendQueryParameter(PICASA_TYPE_KEY, PICASA_TYPE_FULL_VALUE); + } if (data.url != null) { photoUriBuilder.appendQueryParameter(PICASA_URL_KEY, data.url); } @@ -373,6 +395,13 @@ public class PicasaSource extends PhotoSource { is = null; } + if (is != null) { + mRecycleBin.offer(data); + log(TAG, "RECYCLED"); + while (mRecycleBin.size() > mMaxRecycleSize) { + mRecycleBin.poll(); + } + } return is; } } |