From 31056b5f7f1ac9f83d3352004535f4e541cd73c3 Mon Sep 17 00:00:00 2001 From: Andrew Ting Date: Sun, 3 May 2020 22:13:13 -0400 Subject: [PATCH 1/2] Add changes from original returntoloop branch --- .../java/com/afxmusic/MediaPlayerHolder.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/afxmusic/MediaPlayerHolder.java b/app/src/main/java/com/afxmusic/MediaPlayerHolder.java index a1b5d23..d5e94ff 100644 --- a/app/src/main/java/com/afxmusic/MediaPlayerHolder.java +++ b/app/src/main/java/com/afxmusic/MediaPlayerHolder.java @@ -260,13 +260,20 @@ public void setLoop(int loopMode, TextView startText, TextView endText) { loopStart = loopEnd; loopEnd = temp; } + if (loopEnd == songLength) { //handle loopEnd is at very end of song + //Log.d(TAG, "LoopEnd == SongLength: " + loopEnd); + loopEnd -= 250; + //Log.d(TAG, "Changing LoopEnd: " + loopEnd); + } startText.setText("Loop Start: " + convertToTime(loopStart)); endText.setText("Loop End: " + convertToTime(loopEnd)); looping = true; + mMediaPlayer.setLooping(false); } else { // Clear loop looping = false; + mMediaPlayer.setLooping(true); startText.setText("Loop Start: N/A"); endText.setText("Loop End: N/A"); @@ -333,6 +340,23 @@ public double[] getTime(){ return time; } + /** Same functionality as play() but + * is void and does not pause if playing already. + * Only plays. + * */ + private void onlyPlay() { + if (mMediaPlayer != null){ + startUpdatingCallbackWithPosition(); + if(!mMediaPlayer.isPlaying()) { + mMediaPlayer.start(); + mMediaPlayer.setPlaybackParams(mMediaPlayer.getPlaybackParams().setSpeed(speed)); + if (mPlaybackInfoListener != null) { + mPlaybackInfoListener.onStateChanged(PlaybackInfoListener.State.PLAYING); + } + } + } + } + /** * Syncs the mMediaPlayer position with mPlaybackProgressCallback via recurring task. */ @@ -348,9 +372,10 @@ public void run() { // Looping if (looping) { int curr = mMediaPlayer.getCurrentPosition(); - if (curr > loopEnd) { - // Log.d(TAG, "Looping back from " + loopEnd + " to " + loopStart); + if (curr >= songLength || curr >= loopEnd) { + //Log.d(TAG, "Looping back from " + loopEnd + " to " + loopStart); mMediaPlayer.seekTo(loopStart); + onlyPlay(); } } } From 2a4eef00df19da679465065f1fd6a8d8c09f9701 Mon Sep 17 00:00:00 2001 From: Andrew Ting Date: Sun, 3 May 2020 22:32:07 -0400 Subject: [PATCH 2/2] Fix play pause image not updating on loop --- app/src/main/java/com/afxmusic/MainActivity.java | 1 + app/src/main/java/com/afxmusic/MediaPlayerHolder.java | 1 + 2 files changed, 2 insertions(+) diff --git a/app/src/main/java/com/afxmusic/MainActivity.java b/app/src/main/java/com/afxmusic/MainActivity.java index 7ea321f..5b62f38 100644 --- a/app/src/main/java/com/afxmusic/MainActivity.java +++ b/app/src/main/java/com/afxmusic/MainActivity.java @@ -405,6 +405,7 @@ public void onClick(View view) { mEndMarker.setVisibility(View.VISIBLE); mSetLoopButton.setText("Clear loop"); + mPlayButton.setBackgroundResource(R.drawable.pause); } } }); diff --git a/app/src/main/java/com/afxmusic/MediaPlayerHolder.java b/app/src/main/java/com/afxmusic/MediaPlayerHolder.java index d5e94ff..979f6b6 100644 --- a/app/src/main/java/com/afxmusic/MediaPlayerHolder.java +++ b/app/src/main/java/com/afxmusic/MediaPlayerHolder.java @@ -376,6 +376,7 @@ public void run() { //Log.d(TAG, "Looping back from " + loopEnd + " to " + loopStart); mMediaPlayer.seekTo(loopStart); onlyPlay(); + } } }