summaryrefslogtreecommitdiff
path: root/core/src/main/java/de
diff options
context:
space:
mode:
authorJonas Kalderstam <jonas@cowboyprogrammer.org>2019-09-13 00:16:22 +0200
committerJonas Kalderstam <jonas@cowboyprogrammer.org>2019-09-13 00:31:09 +0200
commit4746b16b12b1a8b70e0fcad6c381e5f4d66f491a (patch)
tree8597f2166f7fe3d646eec5634b021ce096d58223 /core/src/main/java/de
parent00c1e7a3d360f6470168d29f9296715831cd388d (diff)
downloadAntennaPod-4746b16b12b1a8b70e0fcad6c381e5f4d66f491a.zip
Changed type of media last playback speed to float from string
Also sets default to "magic" -1 value
Diffstat (limited to 'core/src/main/java/de')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java35
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java13
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java17
6 files changed, 45 insertions, 34 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
index 3b70e4a4d..70e5ea9f4 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
@@ -20,6 +20,8 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
import de.danoeh.antennapod.core.util.ShownotesProvider;
+import static de.danoeh.antennapod.core.feed.FeedPreferences.SPEED_USE_GLOBAL;
+
/**
* Data Object for a XML message
*
@@ -493,6 +495,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, ImageR
if (feed != null) {
return feed.getPreferences().getCurrentPlaybackSpeed();
}
- return UserPreferences.getPlaybackSpeed();
+ return SPEED_USE_GLOBAL;
}
}
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 46795bc11..9aa4dd2d0 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
@@ -21,15 +21,18 @@ import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.DBReader;
-import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
import de.danoeh.antennapod.core.util.ChapterUtils;
import de.danoeh.antennapod.core.util.playback.Playable;
+import static de.danoeh.antennapod.core.feed.FeedPreferences.SPEED_USE_GLOBAL;
+
public class FeedMedia extends FeedFile implements Playable {
private static final String TAG = "FeedMedia";
+ public static final float LAST_PLAYBACK_SPEED_UNSET = SPEED_USE_GLOBAL;
+
public static final int FEEDFILETYPE_FEEDMEDIA = 2;
public static final int PLAYABLE_TYPE_FEEDMEDIA = 1;
@@ -55,7 +58,7 @@ public class FeedMedia extends FeedFile implements Playable {
private Date playbackCompletionDate;
private int startPosition = -1;
private int playedDurationWhenStarted;
- private String lastPlaybackSpeed = null;
+ private float lastPlaybackSpeed = LAST_PLAYBACK_SPEED_UNSET;
// if null: unknown, will be checked
private Boolean hasEmbeddedPicture;
@@ -92,7 +95,7 @@ public class FeedMedia extends FeedFile implements Playable {
private FeedMedia(long id, FeedItem item, int duration, int position,
long size, String mime_type, String file_url, String download_url,
boolean downloaded, Date playbackCompletionDate, int played_duration,
- Boolean hasEmbeddedPicture, long lastPlayedTime, String lastPlaybackSpeed) {
+ Boolean hasEmbeddedPicture, long lastPlayedTime, float lastPlaybackSpeed) {
this(id, item, duration, position, size, mime_type, file_url, download_url, downloaded,
playbackCompletionDate, played_duration, lastPlayedTime);
this.hasEmbeddedPicture = hasEmbeddedPicture;
@@ -111,7 +114,7 @@ public class FeedMedia extends FeedFile implements Playable {
int indexDownloaded = cursor.getColumnIndex(PodDBAdapter.KEY_DOWNLOADED);
int indexPlayedDuration = cursor.getColumnIndex(PodDBAdapter.KEY_PLAYED_DURATION);
int indexLastPlayedTime = cursor.getColumnIndex(PodDBAdapter.KEY_LAST_PLAYED_TIME);
- int indexLastPlaybackSpeed = cursor.getColumnIndex(PodDBAdapter.KEY_LAST_PLAYBACK_SPEED);
+ int indexLastPlaybackSpeed = cursor.getColumnIndex(PodDBAdapter.KEY_MEDIA_LAST_PLAYBACK_SPEED);
long mediaId = cursor.getLong(indexId);
Date playbackCompletionDate = null;
@@ -147,7 +150,7 @@ public class FeedMedia extends FeedFile implements Playable {
cursor.getInt(indexPlayedDuration),
hasEmbeddedPicture,
cursor.getLong(indexLastPlayedTime),
- cursor.getString(indexLastPlaybackSpeed)
+ cursor.getFloat(indexLastPlaybackSpeed)
);
}
@@ -628,11 +631,11 @@ public class FeedMedia extends FeedFile implements Playable {
return super.equals(o);
}
- public String getLastPlaybackSpeed() {
+ public float getLastPlaybackSpeed() {
return lastPlaybackSpeed;
}
- public void updateLastPlaybackSpeed(String newSpeed) {
+ public void updateLastPlaybackSpeed(float newSpeed) {
lastPlaybackSpeed = newSpeed;
DBWriter.setFeedMediaPlaybackInformation(this);
}
@@ -642,19 +645,15 @@ public class FeedMedia extends FeedFile implements Playable {
* @return the current playback speed for the media, or the feed's configured speed
*/
public float getMediaPlaybackSpeed() {
- if (lastPlaybackSpeed != null) {
- try {
- return Float.parseFloat(lastPlaybackSpeed);
- } catch (NumberFormatException e) {
- lastPlaybackSpeed = null;
- }
- }
+ float playbackSpeed = lastPlaybackSpeed;
- FeedItem item = getItem();
- if (item != null) {
- return item.getFeedPlaybackSpeed();
+ if (playbackSpeed == LAST_PLAYBACK_SPEED_UNSET) {
+ FeedItem item = getItem();
+ if (item != null) {
+ playbackSpeed = item.getFeedPlaybackSpeed();
+ }
}
- return UserPreferences.getPlaybackSpeed();
+ return playbackSpeed;
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java
index d7d173e19..2c840952c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java
@@ -14,6 +14,8 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter;
*/
public class FeedPreferences {
+ public static final float SPEED_USE_GLOBAL = -1;
+
@NonNull
private FeedFilter filter;
private long feedID;
@@ -180,7 +182,7 @@ public class FeedPreferences {
this.password = password;
}
- public float getCurrentPlaybackSpeed() {
+ float getCurrentPlaybackSpeed() {
float speed = 0.0f;
if (!"global".equals(feedPlaybackSpeed)) {
@@ -193,7 +195,7 @@ public class FeedPreferences {
// Either global or error happened
if (speed == 0.0f) {
- speed = UserPreferences.getPlaybackSpeed();
+ speed = SPEED_USE_GLOBAL;
}
return speed;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
index abb5d83bd..6a694eb6f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
@@ -35,6 +35,8 @@ import de.danoeh.antennapod.core.util.playback.IPlayer;
import de.danoeh.antennapod.core.util.playback.Playable;
import de.danoeh.antennapod.core.util.playback.VideoPlayer;
+import static de.danoeh.antennapod.core.feed.FeedPreferences.SPEED_USE_GLOBAL;
+
/**
* Manages the MediaPlayer object of the PlaybackService.
*/
@@ -305,13 +307,18 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
Log.d(TAG, "Audiofocus successfully requested");
Log.d(TAG, "Resuming/Starting playback");
acquireWifiLockIfNecessary();
+ float playbackSpeed;
if (media.getMediaType() == MediaType.VIDEO) {
- setPlaybackParams(UserPreferences.getVideoPlaybackSpeed(), UserPreferences.isSkipSilence());
+ playbackSpeed = UserPreferences.getVideoPlaybackSpeed();
} else if (media instanceof FeedMedia) {
- setPlaybackParams(((FeedMedia) media).getMediaPlaybackSpeed(), UserPreferences.isSkipSilence());
+ playbackSpeed = ((FeedMedia) media).getMediaPlaybackSpeed();
} else {
- setPlaybackParams(UserPreferences.getPlaybackSpeed(), UserPreferences.isSkipSilence());
+ playbackSpeed = SPEED_USE_GLOBAL;
+ }
+ if (playbackSpeed == SPEED_USE_GLOBAL) {
+ playbackSpeed = UserPreferences.getPlaybackSpeed();
}
+ setPlaybackParams(playbackSpeed, UserPreferences.isSkipSilence());
setVolume(UserPreferences.getLeftVolume(), UserPreferences.getRightVolume());
if (playerStatus == PlayerStatus.PREPARED && media.getPosition() > 0) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java
index 6126508c6..d06f13177 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java
@@ -8,6 +8,8 @@ import android.util.Log;
import de.danoeh.antennapod.core.feed.FeedItem;
+import static de.danoeh.antennapod.core.feed.FeedMedia.LAST_PLAYBACK_SPEED_UNSET;
+
class DBUpgrader {
/**
* Upgrades the given database to a new schema version
@@ -292,7 +294,7 @@ class DBUpgrader {
db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS
+ " ADD COLUMN " + PodDBAdapter.KEY_FEED_PLAYBACK_SPEED + " TEXT");
db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA
- + " ADD COLUMN " + PodDBAdapter.KEY_LAST_PLAYBACK_SPEED + " TEXT");
+ + " ADD COLUMN " + PodDBAdapter.KEY_MEDIA_LAST_PLAYBACK_SPEED + " REAL DEFAULT " + LAST_PLAYBACK_SPEED_UNSET);
}
}
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 0f4bca09a..44a653158 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
@@ -12,10 +12,7 @@ import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
-import android.media.MediaMetadataRetriever;
import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
@@ -40,6 +37,8 @@ import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.util.LongIntMap;
import org.greenrobot.eventbus.EventBus;
+import static de.danoeh.antennapod.core.feed.FeedMedia.LAST_PLAYBACK_SPEED_UNSET;
+
// TODO Remove media column from feeditem table
/**
@@ -115,7 +114,7 @@ public class PodDBAdapter {
public static final String KEY_INCLUDE_FILTER = "include_filter";
public static final String KEY_EXCLUDE_FILTER = "exclude_filter";
public static final String KEY_FEED_PLAYBACK_SPEED = "feed_playback_speed";
- public static final String KEY_LAST_PLAYBACK_SPEED = "last_playback_speed";
+ public static final String KEY_MEDIA_LAST_PLAYBACK_SPEED = "last_playback_speed";
// Table names
static final String TABLE_NAME_FEEDS = "Feeds";
@@ -171,7 +170,7 @@ public class PodDBAdapter {
+ KEY_PLAYED_DURATION + " INTEGER,"
+ KEY_HAS_EMBEDDED_PICTURE + " INTEGER,"
+ KEY_LAST_PLAYED_TIME + " INTEGER,"
- + KEY_LAST_PLAYBACK_SPEED + " TEXT)";
+ + KEY_MEDIA_LAST_PLAYBACK_SPEED + " REAL)";
private static final String CREATE_TABLE_DOWNLOAD_LOG = "CREATE TABLE "
+ TABLE_NAME_DOWNLOAD_LOG + " (" + TABLE_PRIMARY_KEY + KEY_FEEDFILE
@@ -442,7 +441,7 @@ public class PodDBAdapter {
values.put(KEY_FILE_URL, media.getFile_url());
values.put(KEY_HAS_EMBEDDED_PICTURE, media.hasEmbeddedPicture());
values.put(KEY_LAST_PLAYED_TIME, media.getLastPlayedTime());
- values.put(KEY_LAST_PLAYBACK_SPEED, media.getLastPlaybackSpeed());
+ values.put(KEY_MEDIA_LAST_PLAYBACK_SPEED, media.getLastPlaybackSpeed());
if (media.getPlaybackCompletionDate() != null) {
values.put(KEY_PLAYBACK_COMPLETION_DATE, media.getPlaybackCompletionDate().getTime());
@@ -468,7 +467,7 @@ public class PodDBAdapter {
values.put(KEY_DURATION, media.getDuration());
values.put(KEY_PLAYED_DURATION, media.getPlayedDuration());
values.put(KEY_LAST_PLAYED_TIME, media.getLastPlayedTime());
- values.put(KEY_LAST_PLAYBACK_SPEED, media.getLastPlaybackSpeed());
+ values.put(KEY_MEDIA_LAST_PLAYBACK_SPEED, media.getLastPlaybackSpeed());
db.update(TABLE_NAME_FEED_MEDIA, values, KEY_ID + "=?",
new String[]{String.valueOf(media.getId())});
} else {
@@ -479,7 +478,7 @@ public class PodDBAdapter {
public void setFeedMediaLastPlaybackSpeed(FeedMedia media) {
if (media.getId() != 0) {
ContentValues values = new ContentValues();
- values.put(KEY_LAST_PLAYBACK_SPEED, media.getLastPlaybackSpeed());
+ values.put(KEY_MEDIA_LAST_PLAYBACK_SPEED, media.getLastPlaybackSpeed());
db.update(TABLE_NAME_FEED_MEDIA, values, KEY_ID + "=?",
new String[]{String.valueOf(media.getId())});
} else {
@@ -493,7 +492,7 @@ public class PodDBAdapter {
values.put(KEY_PLAYBACK_COMPLETION_DATE, media.getPlaybackCompletionDate().getTime());
values.put(KEY_PLAYED_DURATION, media.getPlayedDuration());
// Also reset stored playback speed for media
- values.putNull(KEY_LAST_PLAYBACK_SPEED);
+ values.put(KEY_MEDIA_LAST_PLAYBACK_SPEED, LAST_PLAYBACK_SPEED_UNSET);
db.update(TABLE_NAME_FEED_MEDIA, values, KEY_ID + "=?",
new String[]{String.valueOf(media.getId())});
} else {