mediaPlayer.isPlaying () возвращает ложь, когда я нажимаю назад и снова вхожу в игру, пока песня все еще играет - PullRequest
1 голос
/ 27 апреля 2020

я новичок, и я пытаюсь создать приложение для игрока c, и этот код взят из java файла

экрана, который воспроизводится сейчас, истинная часть кода запускается, когда я прихожу к это действие, нажав на нижнюю, теперь воспроизводящую панель, и ложная часть - когда я прихожу к этой активности, нажимая на новую песню из списка ...

сейчас, пока я на этом сейчас воспроизводимом экране, нажимая на песня, в которой работает медиаплеер, но когда я нажимаю назад и возвращаюсь к той же активности, нажимая на нижнюю панель

, медиаплеер говорит, что песня не воспроизводится (но песня воспроизводится), как это исправить ???

mediaPlayer = new MediaPlayer();

        if(SongName == CurrentSong)  //when bottom bar now playing is clicked
        {

            if(mediaPlayer.isPlaying())
            {
                Toast.makeText(getContext(), "song is still playing", Toast.LENGTH_SHORT).show();
            }
            else
            {
                Toast.makeText(getContext(), "song is not playing", Toast.LENGTH_SHORT).show();
            }

        }
        else //when new song from list is clicked
        {
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setDataSource(getContext(), Uri.parse(currentData));
            mediaPlayer.prepare();
            mediaPlayer.start();
        }

1 Ответ

0 голосов
/ 27 апреля 2020

Это может быть потому, что при повторном открытии упражнения вы создаете новый экземпляр мультимедийного проигрывателя, который является нулевым и не воспроизводится, и вы теряете ссылку для активного мультимедийного проигрывателя.

Для этого сохраните ссылку на свой активный mediaplayer, например:

1) Создайте класс:

public class ActiveMedia{

public static List<MediaPlayer> mediaPlayers = new ArrayList<MediaPlayer>();

}

2 ) Когда вы начинаете mediaplayer, сохраняйте свою ссылку в приведенном выше списке c:

   ...............

    else //when new song from list is clicked
        {
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setDataSource(getContext(), Uri.parse(currentData));
            mediaPlayer.prepare();
            mediaPlayer.start();

           //here add the mediaplayer instance
           ActiveMedia.mediaPlayers.add(mediaPlayer);

    ..............

3), когда вы хотите вернуться к активности, проверьте активных игроков, как это

for(MediaPlayer mediaPlayer : ActiveMedia.mediaPlayers){

if(mediaPlayer.isPlaying()){
//there is an active media player
}else{
//there is no active media player

}

//also you can stop the active mediaplayer or remove ..........

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...