У меня есть mp3 песни в списке просмотра.Когда я нажимаю кнопку «Перемешать», ее подсветка остается яркой, и в этот момент логическое значение становится истинным.Затем, когда я снова нажимаю кнопку воспроизведения в случайном порядке, выделение пропадает, и в этот момент логическое значение должно быть ложным, а перемешивание должно прекращаться, чтобы непрерывно воспроизводить песни.
Но, к сожалению, логическое значение не возвращается от истинного к ложному и всегда остается верным.Я не могу понять почему, потому что я делаю все правильно.Основная цель состоит в том, чтобы когда первая песня закончилась, она должна начинаться со второй, а затем с третьей .... Но из-за того, что boolean не возвращается в свое предыдущее состояние (false), даже после того, как я нажму кнопку shuffle, он все равно будет непрерывно воспроизводить песни.
РЕДАКТИРОВАТЬ Вот я поставил видео, чтобы быть более понятным
https://streamable.com/x9ll9
Это мои коды:
public class MainActivity extends AppCompatActivity {
ListView lv;
MediaPlayer mediaPlayer;
private boolean isShuffle = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
btnshuffle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (isShuffle) {
isShuffle = false;
Toast.makeText(getApplicationContext(), "Shuffle is OFF", Toast.LENGTH_SHORT).show();
if(mediaPlayer.isPlaying())
{
mediaPlayer.pause();
buttonPlayPause.setBackgroundResource(R.drawable.ic_play_arrow_black_24dp);
}
else
{
mediaPlayer.start();
buttonPlayPause.setBackgroundResource(R.drawable.ic_pause_black_24dp);
}
SetTimeTotal();
TimeDuration();
btnshuffle.setBackgroundResource(R.drawable.shuffletouch);
oncompletiononce();
} else {
initcommands();
isShuffle = true;
Toast.makeText(getApplicationContext(), "Shuffle is ON", Toast.LENGTH_SHORT).show();
buttonPlayPause.setBackgroundResource(R.drawable.ic_pause_black_24dp);
isRepeat = false;
btnshuffle.setBackgroundResource(R.drawable.shuffletouchfocused);
repeat.setBackgroundResource(R.drawable.btn_repeat);
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
nextsong();
UpdateTimeSong();
}
});
buttonPlayPause.setBackgroundResource(R.drawable.ic_pause_black_24dp);
isRepeat = false;
btnshuffle.setBackgroundResource(R.drawable.shuffletouchfocused);
repeat.setBackgroundResource(R.drawable.btn_repeat);
}
}
});
public void nextsong () {
position++;
if(position > arraySong.size()-1)
{
position = 0;
}
if(mediaPlayer.isPlaying())
{
mediaPlayer.pause();
}
CreateMediaPlayer();
//audioPlayer.startPlayer(position);
mediaPlayer.start();
buttonPlayPause.setBackgroundResource(R.drawable.ic_pause_black_24dp);
closebutton.setBackgroundResource(R.drawable.ic_highlight_off_black_24dp);
initcommands();
oncompletiononce();
}
private void UpdateTimeSong()
{
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//check time song -> if end -> next
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
position++;
if (position > arraySong.size() - 1) {
position = 0;
}
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
CreateMediaPlayer();
mediaPlayer.start();
buttonPlayPause.setBackgroundResource(R.drawable.ic_pause_black_24dp);
SetTimeTotal();
UpdateTimeSong();
}
});
handler.postDelayed(this, 500);
}
},100);
}
}