diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java index ce057c49..fdf19e15 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java @@ -231,8 +231,10 @@ public class MusicPlayerRemote { public static void shuffleAllSongs(final Context context) { ArrayList songs = SongLoader.getAllSongs(context); - MusicPlayerRemote.openQueue(songs, new Random().nextInt(songs.size()), true); - forceSetShuffleMode(context, MusicService.SHUFFLE_MODE_SHUFFLE); + if (!songs.isEmpty()) { + MusicPlayerRemote.openQueue(songs, new Random().nextInt(songs.size()), true); + forceSetShuffleMode(context, MusicService.SHUFFLE_MODE_SHUFFLE); + } } public static void playNext(Song song) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java index 7464beaa..c1dac3d9 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java @@ -290,27 +290,31 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe isPlayerPrepared = false; player.reset(); player.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); - try { - Uri trackUri = getCurrentPositionTrackUri(); - player.setDataSource(getApplicationContext(), trackUri); - player.prepareAsync(); - } catch (Exception e) { - Log.e("MUSIC SERVICE", "Error setting data source", e); - player.reset(); - player = null; - Toast.makeText(getApplicationContext(), getResources().getString(R.string.unplayable_file), Toast.LENGTH_SHORT).show(); - notifyOnMusicRemoteEventListeners(MusicRemoteEvent.STOP); + if (position != -1) { + try { + Uri trackUri = getCurrentPositionTrackUri(); + player.setDataSource(getApplicationContext(), trackUri); + player.prepareAsync(); + } catch (Exception e) { + player.reset(); + player = null; + + notifyOnMusicRemoteEventListeners(MusicRemoteEvent.STOP); + playingNotificationHelper.updatePlayState(false); + MusicPlayerWidget.updateWidgetsPlayState(this, false); + remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED); + + Toast.makeText(getApplicationContext(), getResources().getString(R.string.unplayable_file), Toast.LENGTH_SHORT).show(); + return; + } + currentSongId = playingQueue.get(getPosition()).id; + updateNotification(); + updateWidgets(); + updateRemoteControlClient(); + } else { playingNotificationHelper.updatePlayState(false); MusicPlayerWidget.updateWidgetsPlayState(this, false); - remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED); - updateNotification(); - updateRemoteControlClient(); - return; } - currentSongId = playingQueue.get(getPosition()).id; - updateNotification(); - updateWidgets(); - updateRemoteControlClient(); } notifyOnMusicRemoteEventListeners(MusicRemoteEvent.TRACK_CHANGED); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java index 12e5a74e..a33d834e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java @@ -95,8 +95,15 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { setContentView(getContentViewResId()); getIntentExtras(); - headerVariableSpace = getResources().getDimensionPixelSize(R.dimen.tagEditorHeaderVariableSpace); + songPaths = getSongPaths(); + if (songPaths.isEmpty()) { + finish(); + return; + } + + headerVariableSpace = getResources().getDimensionPixelSize(R.dimen.tagEditorHeaderVariableSpace); + initViews(); setUpViews();