summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/com/cyanogenmod/eleven/MusicPlaybackService.java47
2 files changed, 31 insertions, 18 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 38197c9..5bf25b1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -166,7 +166,7 @@
<string name="empty_generic_secondary">To copy music from your computer to your device, use a USB cable.</string>
<string name="empty_queue_main">No songs in play queue</string>
<string name="empty_queue_secondary">To add songs to your Play Queue, tap the options menu on a song, album, or artist and select \"Add to queue\".</string>
- <string name="error_playing_track">Unable to play track %1$s, removing it from the queue</string>
+ <string name="error_playing_track">Unable to play track %1$s</string>
<!-- Section Headers -->
<string name="header_unknown_year">Unknown year</string>
diff --git a/src/com/cyanogenmod/eleven/MusicPlaybackService.java b/src/com/cyanogenmod/eleven/MusicPlaybackService.java
index 5b71d86..73c3694 100644
--- a/src/com/cyanogenmod/eleven/MusicPlaybackService.java
+++ b/src/com/cyanogenmod/eleven/MusicPlaybackService.java
@@ -1156,6 +1156,8 @@ public class MusicPlaybackService extends Service {
}
stop(false);
+ boolean shutdown = false;
+
updateCursor(mPlaylist.get(mPlayPos).mId);
while (true) {
if (mCursor != null
@@ -1163,6 +1165,7 @@ public class MusicPlaybackService extends Service {
+ mCursor.getLong(IDCOLIDX))) {
break;
}
+
// if we get here then opening the file failed. We can close the
// cursor now, because
// we're either going to create a new one next, or stop trying
@@ -1170,12 +1173,8 @@ public class MusicPlaybackService extends Service {
if (mOpenFailedCounter++ < 10 && mPlaylist.size() > 1) {
final int pos = getNextPosition(false);
if (pos < 0) {
- scheduleDelayedShutdown();
- if (mIsSupposedToBePlaying) {
- mIsSupposedToBePlaying = false;
- notifyChange(PLAYSTATE_CHANGED);
- }
- return;
+ shutdown = true;
+ break;
}
mPlayPos = pos;
stop(false);
@@ -1184,20 +1183,29 @@ public class MusicPlaybackService extends Service {
} else {
mOpenFailedCounter = 0;
Log.w(TAG, "Failed to open file for playback");
- scheduleDelayedShutdown();
- if (mIsSupposedToBePlaying) {
- mIsSupposedToBePlaying = false;
- notifyChange(PLAYSTATE_CHANGED);
- }
- return;
+ shutdown = true;
+ break;
}
}
- if (openNext) {
+
+ if (shutdown) {
+ scheduleDelayedShutdown();
+ if (mIsSupposedToBePlaying) {
+ mIsSupposedToBePlaying = false;
+ notifyChange(PLAYSTATE_CHANGED);
+ }
+ } else if (openNext) {
setNextTrack();
}
}
}
+ private void sendErrorMessage(final String trackName) {
+ final Intent i = new Intent(TRACK_ERROR);
+ i.putExtra(TrackErrorExtra.TRACK_NAME, trackName);
+ sendBroadcast(i);
+ }
+
/**
* @param force True to force the player onto the track next, false
* otherwise.
@@ -1727,6 +1735,13 @@ public class MusicPlaybackService extends Service {
mOpenFailedCounter = 0;
return true;
}
+
+ String trackName = getTrackName();
+ if (TextUtils.isEmpty(trackName)) {
+ trackName = path;
+ }
+ sendErrorMessage(trackName);
+
stop(true);
return false;
}
@@ -1989,7 +2004,7 @@ public class MusicPlaybackService extends Service {
*/
public String getGenreName() {
synchronized (this) {
- if (mCursor == null) {
+ if (mCursor == null || mPlayPos < 0 || mPlayPos >= mPlaylist.size()) {
return null;
}
String[] genreProjection = { MediaStore.Audio.Genres.NAME };
@@ -2813,10 +2828,8 @@ public class MusicPlaybackService extends Service {
break;
case SERVER_DIED:
if (service.isPlaying()) {
- final Intent i = new Intent(TRACK_ERROR);
final TrackErrorInfo info = (TrackErrorInfo)msg.obj;
- i.putExtra(TrackErrorExtra.TRACK_NAME, info.mTrackName);
- service.sendBroadcast(i);
+ service.sendErrorMessage(info.mTrackName);
// since the service isPlaying(), we only need to remove the offending
// audio track, and the code will automatically play the next track