Made gapless playback working again.
This commit is contained in:
parent
7f0e58aaf8
commit
66a676aae7
1 changed files with 4 additions and 34 deletions
|
|
@ -22,8 +22,8 @@ import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||||
public class MultiPlayer implements Playback, MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener {
|
public class MultiPlayer implements Playback, MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener {
|
||||||
public static final String TAG = MultiPlayer.class.getSimpleName();
|
public static final String TAG = MultiPlayer.class.getSimpleName();
|
||||||
|
|
||||||
private DoubleMediaPlayer mCurrentMediaPlayer = new DoubleMediaPlayer();
|
private MediaPlayer mCurrentMediaPlayer = new MediaPlayer();
|
||||||
private DoubleMediaPlayer mNextMediaPlayer;
|
private MediaPlayer mNextMediaPlayer;
|
||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|
@ -116,7 +116,7 @@ public class MultiPlayer implements Playback, MediaPlayer.OnErrorListener, Media
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (PreferenceUtil.getInstance(context).gaplessPlayback()) {
|
if (PreferenceUtil.getInstance(context).gaplessPlayback()) {
|
||||||
mNextMediaPlayer = new DoubleMediaPlayer();
|
mNextMediaPlayer = new MediaPlayer();
|
||||||
mNextMediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
|
mNextMediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
|
||||||
mNextMediaPlayer.setAudioSessionId(getAudioSessionId());
|
mNextMediaPlayer.setAudioSessionId(getAudioSessionId());
|
||||||
if (setDataSourceImpl(mNextMediaPlayer, path)) {
|
if (setDataSourceImpl(mNextMediaPlayer, path)) {
|
||||||
|
|
@ -303,7 +303,7 @@ public class MultiPlayer implements Playback, MediaPlayer.OnErrorListener, Media
|
||||||
public boolean onError(final MediaPlayer mp, final int what, final int extra) {
|
public boolean onError(final MediaPlayer mp, final int what, final int extra) {
|
||||||
mIsInitialized = false;
|
mIsInitialized = false;
|
||||||
mCurrentMediaPlayer.release();
|
mCurrentMediaPlayer.release();
|
||||||
mCurrentMediaPlayer = new DoubleMediaPlayer();
|
mCurrentMediaPlayer = new MediaPlayer();
|
||||||
mCurrentMediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
|
mCurrentMediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
|
||||||
if (context != null) {
|
if (context != null) {
|
||||||
Toast.makeText(context, context.getResources().getString(R.string.unplayable_file), Toast.LENGTH_SHORT).show();
|
Toast.makeText(context, context.getResources().getString(R.string.unplayable_file), Toast.LENGTH_SHORT).show();
|
||||||
|
|
@ -329,34 +329,4 @@ public class MultiPlayer implements Playback, MediaPlayer.OnErrorListener, Media
|
||||||
callbacks.onTrackEnded();
|
callbacks.onTrackEnded();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class DoubleMediaPlayer extends MediaPlayer implements MediaPlayer.OnCompletionListener {
|
|
||||||
private MediaPlayer mNextPlayer;
|
|
||||||
|
|
||||||
private OnCompletionListener mCompletion;
|
|
||||||
|
|
||||||
public DoubleMediaPlayer() {
|
|
||||||
super.setOnCompletionListener(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setNextMediaPlayer(final MediaPlayer next) {
|
|
||||||
mNextPlayer = next;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOnCompletionListener(final OnCompletionListener listener) {
|
|
||||||
mCompletion = listener;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCompletion(final MediaPlayer mp) {
|
|
||||||
if (mNextPlayer != null) {
|
|
||||||
// SystemClock.sleep(25);
|
|
||||||
mNextPlayer.start();
|
|
||||||
}
|
|
||||||
if (mCompletion != null)
|
|
||||||
mCompletion.onCompletion(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue