summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-02-28 15:38:26 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2013-02-28 15:38:26 +0100
commit7fe0e05304b5683d3a3cc0ba5a1938f73ffd54de (patch)
tree0b2097a7380c92251f30b190b29d299937d34af0 /src
parent84dd063568d44cb77d2882e96dd110486ccdd205 (diff)
downloadAntennaPod-7fe0e05304b5683d3a3cc0ba5a1938f73ffd54de.zip
Fixed crash when audio focus was lost
Diffstat (limited to 'src')
-rw-r--r--src/de/danoeh/antennapod/feed/FeedItem.java2
-rw-r--r--src/de/danoeh/antennapod/feed/FeedManager.java2
-rw-r--r--src/de/danoeh/antennapod/preferences/PlaybackPreferences.java40
-rw-r--r--src/de/danoeh/antennapod/service/PlaybackService.java29
4 files changed, 58 insertions, 15 deletions
diff --git a/src/de/danoeh/antennapod/feed/FeedItem.java b/src/de/danoeh/antennapod/feed/FeedItem.java
index 2887b62af..bb176c411 100644
--- a/src/de/danoeh/antennapod/feed/FeedItem.java
+++ b/src/de/danoeh/antennapod/feed/FeedItem.java
@@ -213,7 +213,7 @@ public class FeedItem extends FeedComponent {
private boolean isPlaying() {
if (media != null) {
- if (PlaybackPreferences.getCurrentlyPlayingMedia() == media.getId()) {
+ if (PlaybackPreferences.getCurrentlyPlayingFeedMediaId() == media.getId()) {
return true;
}
}
diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java
index 16f5937ca..e984da46a 100644
--- a/src/de/danoeh/antennapod/feed/FeedManager.java
+++ b/src/de/danoeh/antennapod/feed/FeedManager.java
@@ -197,7 +197,7 @@ public class FeedManager {
PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
SharedPreferences.Editor editor = prefs.edit();
editor.putLong(PlaybackPreferences.PREF_LAST_PLAYED_ID, -1);
- editor.putLong(PlaybackPreferences.PREF_LAST_PLAYED_FEED_ID, -1);
+ editor.putLong(PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEED_ID, -1);
editor.commit();
}
diff --git a/src/de/danoeh/antennapod/preferences/PlaybackPreferences.java b/src/de/danoeh/antennapod/preferences/PlaybackPreferences.java
index 3187c0622..b93b2e07c 100644
--- a/src/de/danoeh/antennapod/preferences/PlaybackPreferences.java
+++ b/src/de/danoeh/antennapod/preferences/PlaybackPreferences.java
@@ -20,13 +20,22 @@ public class PlaybackPreferences implements
/** Contains the type of the media that was played last. */
public static final String PREF_LAST_PLAYED_ID = "de.danoeh.antennapod.preferences.lastPlayedId";
- /** Contains the feed id of the last played item. */
- public static final String PREF_LAST_PLAYED_FEED_ID = "de.danoeh.antennapod.preferences.lastPlayedFeedId";
+ /**
+ * Contains the feed id of the currently playing item if it is a FeedMedia
+ * object.
+ */
+ public static final String PREF_CURRENTLY_PLAYING_FEED_ID = "de.danoeh.antennapod.preferences.lastPlayedFeedId";
/**
- * Type of the media object that is currently being played. This preference is
- * set to NO_MEDIA_PLAYING after playback has been completed and is set as
- * soon as the 'play' button is pressed.
+ * Contains the id of the currently playing FeedMedia object or
+ * NO_MEDIA_PLAYING if the currently playing media is no FeedMedia object.
+ */
+ public static final String PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID = "de.danoeh.antennapod.preferences.lastPlayedFeedMediaId";
+
+ /**
+ * Type of the media object that is currently being played. This preference
+ * is set to NO_MEDIA_PLAYING after playback has been completed and is set
+ * as soon as the 'play' button is pressed.
*/
public static final String PREF_CURRENTLY_PLAYING_MEDIA = "de.danoeh.antennapod.preferences.currentlyPlayingMedia";
@@ -49,7 +58,8 @@ public class PlaybackPreferences implements
public static final long NO_MEDIA_PLAYING = -1;
private long lastPlayedId;
- private long lastPlayedFeedId;
+ private long currentlyPlayingFeedId;
+ private long currentlyPlayingFeedMediaId;
private long currentlyPlayingMedia;
private boolean lastIsStream;
private boolean lastIsVideo;
@@ -85,7 +95,9 @@ public class PlaybackPreferences implements
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(context);
lastPlayedId = sp.getLong(PREF_LAST_PLAYED_ID, -1);
- lastPlayedFeedId = sp.getLong(PREF_LAST_PLAYED_FEED_ID, -1);
+ currentlyPlayingFeedId = sp.getLong(PREF_CURRENTLY_PLAYING_FEED_ID, -1);
+ currentlyPlayingFeedMediaId = sp.getLong(
+ PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
currentlyPlayingMedia = sp.getLong(PREF_CURRENTLY_PLAYING_MEDIA,
NO_MEDIA_PLAYING);
lastIsStream = sp.getBoolean(PREF_LAST_IS_STREAM, true);
@@ -108,8 +120,9 @@ public class PlaybackPreferences implements
manager.autoDeleteIfPossible(context, media);
}
}
- } else if (key.equals(PREF_LAST_PLAYED_FEED_ID)) {
- lastPlayedFeedId = sp.getLong(PREF_LAST_PLAYED_FEED_ID, -1);
+ } else if (key.equals(PREF_CURRENTLY_PLAYING_FEED_ID)) {
+ currentlyPlayingFeedId = sp.getLong(PREF_CURRENTLY_PLAYING_FEED_ID,
+ -1);
} else if (key.equals(PREF_CURRENTLY_PLAYING_MEDIA)) {
currentlyPlayingMedia = sp
@@ -126,6 +139,9 @@ public class PlaybackPreferences implements
PREF_AUTODELETE_MEDIA_ID, false);
} else if (key.equals(PREF_AUTODELETE_MEDIA_ID)) {
autoDeleteMediaId = sp.getLong(PREF_AUTODELETE_MEDIA_ID, -1);
+ } else if (key.equals(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID)) {
+ currentlyPlayingFeedMediaId = sp.getLong(
+ PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
}
}
@@ -147,7 +163,7 @@ public class PlaybackPreferences implements
public static long getLastPlayedFeedId() {
instanceAvailable();
- return instance.lastPlayedFeedId;
+ return instance.currentlyPlayingFeedId;
}
public static long getCurrentlyPlayingMedia() {
@@ -155,6 +171,10 @@ public class PlaybackPreferences implements
return instance.currentlyPlayingMedia;
}
+ public static long getCurrentlyPlayingFeedMediaId() {
+ return instance.currentlyPlayingFeedMediaId;
+ }
+
public static boolean isLastIsStream() {
instanceAvailable();
return instance.lastIsStream;
diff --git a/src/de/danoeh/antennapod/service/PlaybackService.java b/src/de/danoeh/antennapod/service/PlaybackService.java
index c0c5db9b0..450f7f65d 100644
--- a/src/de/danoeh/antennapod/service/PlaybackService.java
+++ b/src/de/danoeh/antennapod/service/PlaybackService.java
@@ -321,7 +321,7 @@ public class PlaybackService extends Service {
case AudioManager.AUDIOFOCUS_LOSS:
if (AppConfig.DEBUG)
Log.d(TAG, "Lost audio focus");
- pause(true, true);
+ pause(true, false);
stopSelf();
break;
case AudioManager.AUDIOFOCUS_GAIN:
@@ -467,7 +467,8 @@ public class PlaybackService extends Service {
setStatus(PlayerStatus.PREPARING);
player.prepareAsync();
} else {
- player.setDataSource(media.getLocalMediaUrl());
+ player.setDataSource(media
+ .getLocalMediaUrl());
setStatus(PlayerStatus.PREPARING);
player.prepareAsync();
}
@@ -536,7 +537,8 @@ public class PlaybackService extends Service {
if (shouldStream) {
player.setDataSource(media.getStreamUrl());
} else if (media.localFileAvailable()) {
- player.setDataSource(media.getLocalMediaUrl());
+ player.setDataSource(media
+ .getLocalMediaUrl());
}
if (prepareImmediately) {
@@ -708,6 +710,11 @@ public class PlaybackService extends Service {
editor.putBoolean(
PlaybackPreferences.PREF_AUTO_DELETE_MEDIA_PLAYBACK_COMPLETED,
true);
+ editor.putLong(
+ PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID,
+ PlaybackPreferences.NO_MEDIA_PLAYING);
+ editor.putLong(PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEED_ID,
+ PlaybackPreferences.NO_MEDIA_PLAYING);
editor.commit();
// Prepare for playing next item
@@ -861,6 +868,22 @@ public class PlaybackService extends Service {
playingVideo);
editor.putLong(PlaybackPreferences.PREF_LAST_PLAYED_ID,
media.getPlayableType());
+ if (media instanceof FeedMedia) {
+ FeedMedia fMedia = (FeedMedia) media;
+ editor.putLong(
+ PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEED_ID,
+ fMedia.getItem().getFeed().getId());
+ editor.putLong(
+ PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID,
+ fMedia.getId());
+ } else {
+ editor.putLong(
+ PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEED_ID,
+ PlaybackPreferences.NO_MEDIA_PLAYING);
+ editor.putLong(
+ PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID,
+ PlaybackPreferences.NO_MEDIA_PLAYING);
+ }
media.writeToPreferences(editor);
editor.commit();