Boolean не возвращается от истинного к ложному - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть 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);
    }

}

1 Ответ

0 голосов
/ 20 сентября 2019
  1. Попробуйте назначить isShuffle перед initcommands ().
  2. Если 1-й вариант не сработал, попробуйте назначить isShuffle в качестве 1-й строки в onClick (), а затем выполнить операцию на основе состояния isShuffle.
...