summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Hennen <TomHennen@users.noreply.github.com>2015-07-20 18:26:49 -0400
committerTom Hennen <TomHennen@users.noreply.github.com>2015-07-20 18:26:49 -0400
commit7c80e79f0beeddc3eb863ccf8e073d2ed2c6e0cf (patch)
tree724c4471e07a9a678038fc959c353b9db007265f
parent71bd2a1d74a3ca4a16115674d3749af46688c973 (diff)
parent36626bbdb9be7b700e64cebced8d3986c06cdfd6 (diff)
downloadAntennaPod-7c80e79f0beeddc3eb863ccf8e073d2ed2c6e0cf.zip
Merge pull request #1027 from TomHennen/fix1026
Fix1026
-rw-r--r--app/src/main/AndroidManifest.xml5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java21
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/FeedMediaSizeService.java19
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java2
4 files changed, 37 insertions, 10 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c6dd71353..24c9c2726 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,15 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.danoeh.antennapod"
- android:versionCode="1030001"
- android:versionName="1.3-RC1">
+ android:versionCode="1030002"
+ android:versionName="1.3-RC2">
<!--
Version code schema:
"1.2.3-SNAPSHOT" -> 1020300
"1.2.3-RC4" -> 1020304
"1.2.3[-RELEASE] -> 1020399
-->
-
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
index 33dd9d636..55ab46335 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
@@ -28,6 +28,15 @@ public class FeedMedia extends FeedFile implements Playable {
public static final String PREF_MEDIA_ID = "FeedMedia.PrefMediaId";
public static final String PREF_FEED_ID = "FeedMedia.PrefFeedId";
+ /**
+ * Indicates we've checked on the size of the item via the network
+ * and got an invalid response. Using Integer.MIN_VALUE because
+ * 1) we'll still check on it in case it gets downloaded (it's <= 0)
+ * 2) By default all FeedMedia have a size of 0 if we don't know it,
+ * so this won't conflict with existing practice.
+ */
+ private static final int CHECKED_ON_SIZE = Integer.MIN_VALUE;
+
private int duration;
private int position; // Current position in file
private int played_duration; // How many ms of this file have been played (for autoflattring)
@@ -199,6 +208,18 @@ public class FeedMedia extends FeedFile implements Playable {
this.size = size;
}
+ /**
+ * Indicates we asked the service what the size was, but didn't
+ * get a valid answer and we shoudln't check using the network again.
+ */
+ public void setCheckedOnSize() {
+ this.size = CHECKED_ON_SIZE;
+ }
+
+ public boolean checkedOnSize() {
+ return (CHECKED_ON_SIZE == this.size);
+ }
+
public String getMime_type() {
return mime_type;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/FeedMediaSizeService.java b/core/src/main/java/de/danoeh/antennapod/core/service/FeedMediaSizeService.java
index e64a38901..2882039c0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/FeedMediaSizeService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/FeedMediaSizeService.java
@@ -28,21 +28,23 @@ public class FeedMediaSizeService extends IntentService {
@Override
protected void onHandleIntent(Intent intent) {
Log.d(TAG, "onHandleIntent()");
- if(false == NetworkUtils.networkAvailable(this)) {
+ if(false == NetworkUtils.isDownloadAllowed(this)) {
return;
}
List<FeedMedia> list = DBReader.getFeedMediaUnknownSize(this);
for (FeedMedia media : list) {
- if(false == NetworkUtils.networkAvailable(this)) {
+ Log.d(TAG, "Getting size currently " + media.getSize() + " for " + media.getDownload_url());
+ if(false == NetworkUtils.isDownloadAllowed(this)) {
return;
}
long size = Integer.MIN_VALUE;
- if(media.isDownloaded()) {
+ if (media.isDownloaded()) {
File mediaFile = new File(media.getLocalMediaUrl());
if(mediaFile.exists()) {
size = mediaFile.length();
}
- } else {
+ } else if (false == media.checkedOnSize()) {
+ // only query the network if we haven't already checked
HttpURLConnection conn = null;
try {
URL url = new URL(media.getDownload_url());
@@ -50,7 +52,6 @@ public class FeedMediaSizeService extends IntentService {
conn.setRequestProperty("Accept-Encoding", "");
conn.setRequestMethod("HEAD");
size = conn.getContentLength();
- conn.disconnect();
} catch (IOException e) {
Log.d(TAG, media.getDownload_url());
e.printStackTrace();
@@ -60,7 +61,13 @@ public class FeedMediaSizeService extends IntentService {
}
}
}
- media.setSize(size);
+ if (size <= 0) {
+ // they didn't tell us the size, but we don't want to keep querying on it
+ media.setCheckedOnSize();
+ } else {
+ media.setSize(size);
+ }
+ Log.d(TAG, "Size now: " + media.getSize());
DBWriter.setFeedMedia(this, media);
EventBus.getDefault().post(FeedMediaEvent.update(media));
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
index 15f35d644..0153cbc8c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
@@ -1113,7 +1113,7 @@ public class PodDBAdapter {
public final Cursor getFeedMediaUnknownSizeCursor() {
final String query = "SELECT * "
+ " FROM " + TABLE_NAME_FEED_MEDIA
- + " WHERE " + KEY_SIZE + ">" + Integer.MIN_VALUE;
+ + " WHERE " + KEY_SIZE + "<= 0";
return db.rawQuery(query, null);
}