2013-07-30 2 views
1

Привет всем Вот мой код:Как остановить воспроизведение звука при нажатии кнопки «Назад»?

final ImageView imageView = (ImageView) findViewById(R.id.Image7); 
    imageView.setImageResource(mFullSizeIds[position]); 
    imageView.setOnClickListener(new View.OnClickListener() { 

@Override 
     public void onClick(View v) { 
    MediaPlayer mp = MediaPlayer.create(Audio.this,mAudio[position]); 
    mp.start(); 

} 

    }); 

Теперь этот код прекрасно работает для воспроизведения звука, когда пользователь вводит изображение, однако, когда я хочу, чтобы выйти из этой деятельности и перейти к другой деятельности, звуковая дорожка все еще воспроизводится, даже когда я нажимаю домашний ключ, звук все еще воспроизводится. Как я могу предотвратить это? Есть ли способ остановить воспроизведение дорожки, когда пользователь снова нажимает изображение или нажимает кнопку «Назад/Дом»?

+1

В вашей 'onPause' используйте' mp.stop() 'и' mp.release() '. – Raghunandan

ответ

1

Создайте onStop в своей активности и сделайте mp переменную класса, хотя я всегда создаю/предпочитаю вспомогательный класс медиа-плеера для такого рода вещей. Затем вызовите mp.stop()/pause на onStop.

private MediaPlayer mp = null; 

@Override 
public void onStop() { 
    super.onStop(); 

    if (mp != null) { 
     mp.stop(); 
    } 
} 

тогда вы просто создать его с удалением MediaPlayer перед тем ммк:

mp = MediaPlayer.create(Audio.this,mAudio[position]); 
+0

Не могли бы вы объяснить, как создать «onStop» в моей деятельности и как сделать mp переменной класса? – Allrounder

+0

обновленный ответ, в основном вы создаете MediaPlayer mp вне методов, это будет означать его доступность из любых методов внутри вашей деятельности. – Faisal

+0

Привет, спасибо за это! однако, когда я выбираю следующий образ, звуковая дорожка предыдущего изображения не останавливается, поскольку раньше он просто воспроизводил предыдущее изображение. Любая идея, что может это сделать? – Allrounder

3

Добавить

@Override 
    public void onBackPressed() 
    { 
     if (mp != null) 
     mp.stop(); 
     super.onBackPressed(); 
    } 

и

@Override 
public void onPause() 
{ 
    if (mp != null) 
    { 
    mp.pause(); 
    mp.stop(); 
    } 
    super.onPause(); 
} 
1

переопределять метод onBackPressed, и остановка MediaPlayer объект, который является mp.

Смежные вопросы