2016-03-15 1 views
0

Я просто хотел бы остановить файл MediaPlayer, и я действительно не понимаю, почему это так сложно. У меня есть этот метод, чтобы начать музыку:Файл Stop MediaPlayer

public void startMusic() { 
    mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy); 
     mediaPlayer1.start(); 
     mediaPlayer1.setVolume(0.2f, 0.2f); 
     mediaPlayer1.setLooping(true); 
     play = true; 
    } 

И я хотел бы, чтобы остановить музыку с помощью этого метода:

public void stopMusic(){ 
    mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy); 
    if(play){ 
     mediaPlayer1.stop(); 
     mediaPlayer1.reset(); 
     mediaPlayer1.release(); 
     mediaPlayer1 = null; 
     play = false; 
    } 

Когда я вызываю метод startMusic начинается музыка, но когда я называю stopMusic тогда ничего не происходит. Если кто-нибудь знает, как это сделать, ответьте.

ответ

1
mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy); 

На этой линии вы создаете новый объект MediaPlayer и вы потеряете старую ссылку на объект (он будет продолжать играть до дс). Используйте тот же объект, как указано ниже

public void stopMusic(){ 
    if (mediaPlayer1 != null){ 
     if(mediaPlayer1.isPlaying()){ 
     mediaPlayer1.stop(); 
     mediaPlayer1.reset(); 
     mediaPlayer1.release(); 
     mediaPlayer1 = null; 
     } 
    } 
+1

Спасибо, что это работает сейчас! –

1

Вы снова создать MediaPlayer экземпляр и останавливая новый экземпляр. Но вам нужно остановить существующий экземпляр MediaPlayer, который работает и воспроизводит аудио. Измените свою stopMusic() -

public void stopMusic(){ 

    if(play && mediaPlayer1 != null){ 
     mediaPlayer1.stop(); 
     mediaPlayer1.reset(); 
     mediaPlayer1.release(); 
     mediaPlayer1 = null; 
     play = false; 
    } 
+0

Спасибо, что он работает сейчас! –