diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2014-02-17 21:40:04 +0100 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2014-02-17 21:40:04 +0100 |
commit | 02653918f0290dcff582987b52cd99c6ea707ed9 (patch) | |
tree | 41b1c62d9a4a839f543186b604f280d659fbb11a /src/de/danoeh/antennapod/service/playback | |
parent | a2f841c43e95c8b3743788e7bbc505c90045e73b (diff) | |
parent | 33b1f107441dc83cc3917078cf9164f00e7ff8b1 (diff) | |
download | AntennaPod-02653918f0290dcff582987b52cd99c6ea707ed9.zip |
Merge branch 'flattr_queue_autoflattr' into develop (#331)
Other changes:
- Changed FlattrStatusFetcher into Thread-subclass
- Changed auto-flattr mechanism so that it's compatible with the updated PlaybackService
- Changed a couple of strings
Conflicts:
src/de/danoeh/antennapod/storage/DBReader.java
src/de/danoeh/antennapod/storage/DBWriter.java
src/de/danoeh/antennapod/util/menuhandler/FeedItemMenuHandler.java
src/instrumentationTest/de/test/antennapod/storage/DBReaderTest.java
Diffstat (limited to 'src/de/danoeh/antennapod/service/playback')
-rw-r--r-- | src/de/danoeh/antennapod/service/playback/PlaybackService.java | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/de/danoeh/antennapod/service/playback/PlaybackService.java b/src/de/danoeh/antennapod/service/playback/PlaybackService.java index 211d67532..132932c93 100644 --- a/src/de/danoeh/antennapod/service/playback/PlaybackService.java +++ b/src/de/danoeh/antennapod/service/playback/PlaybackService.java @@ -23,6 +23,7 @@ import android.util.Pair; import android.view.KeyEvent; import android.view.SurfaceHolder; import de.danoeh.antennapod.AppConfig; +import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.AudioplayerActivity; import de.danoeh.antennapod.activity.VideoplayerActivity; @@ -38,6 +39,7 @@ import de.danoeh.antennapod.storage.DBTasks; import de.danoeh.antennapod.storage.DBWriter; import de.danoeh.antennapod.util.BitmapDecoder; import de.danoeh.antennapod.util.QueueAccess; +import de.danoeh.antennapod.util.flattr.FlattrUtils; import de.danoeh.antennapod.util.playback.Playable; import de.danoeh.antennapod.util.playback.PlaybackController; @@ -344,7 +346,7 @@ public class PlaybackService extends Service { private final PlaybackServiceTaskManager.PSTMCallback taskManagerCallback = new PlaybackServiceTaskManager.PSTMCallback() { @Override public void positionSaverTick() { - saveCurrentPosition(); + saveCurrentPosition(true, PlaybackServiceTaskManager.POSITION_SAVER_WAITING_INTERVAL); } @Override @@ -380,7 +382,7 @@ public class PlaybackService extends Service { case PAUSED: taskManager.cancelPositionSaver(); - saveCurrentPosition(); + saveCurrentPosition(false, 0); taskManager.cancelWidgetUpdater(); stopForeground(true); break; @@ -714,13 +716,32 @@ public class PlaybackService extends Service { /** * Saves the current position of the media file to the DB + * + * @param updatePlayedDuration true if played_duration should be updated. This applies only to FeedMedia objects + * @param deltaPlayedDuration value by which played_duration should be increased. */ - private synchronized void saveCurrentPosition() { + private synchronized void saveCurrentPosition(boolean updatePlayedDuration, int deltaPlayedDuration) { int position = getCurrentPosition(); + int duration = getDuration(); final Playable playable = mediaPlayer.getPSMPInfo().playable; - if (position != INVALID_TIME && playable != null) { + if (position != INVALID_TIME && duration != INVALID_TIME && playable != null) { if (AppConfig.DEBUG) Log.d(TAG, "Saving current position to " + position); + if (updatePlayedDuration && playable instanceof FeedMedia) { + FeedMedia m = (FeedMedia) playable; + FeedItem item = m.getItem(); + m.setPlayedDuration(m.getPlayedDuration() + deltaPlayedDuration); + // Auto flattr + if (FlattrUtils.hasToken() && UserPreferences.isAutoFlattr() && item.getPaymentLink() != null && item.getFlattrStatus().getUnflattred() && + (m.getPlayedDuration() > UserPreferences.getPlayedDurationAutoflattrThreshold() * duration)) { + + if (AppConfig.DEBUG) + Log.d(TAG, "saveCurrentPosition: performing auto flattr since played duration " + Integer.toString(m.getPlayedDuration()) + + " is " + UserPreferences.getPlayedDurationAutoflattrThreshold() * 100 + "% of file duration " + Integer.toString(duration)); + item.getFlattrStatus().setFlattrQueue(); + DBWriter.setFeedItemFlattrStatus(PodcastApp.getInstance(), item, false); + } + } playable.saveCurrentPosition(PreferenceManager .getDefaultSharedPreferences(getApplicationContext()), position); |