Я хочу остановить медиаплеер при нажатии кнопки home в Android
Когда я не в своем приложении (при нажатии кнопки "Домой" или "Назад"), музыка продолжает играть в фоновом режиме. Как я могу это остановить?
public class MainActivity extends Activity implements OnClickListener {
MediaPlayer ourSong;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ourSong = MediaPlayer.create(MainActivity.this, R.raw.girissong);
ourSong.start();
// codes
}
@Override
public void onClick(View v) {
// some code
}
}
}
Я сделал этот код, и он должен остановиться, когда я пойду в следующий класс и начнется следующая песня
5 ответов
Поместите два следующих метода в свой класс для остановки воспроизведения музыки при переходе к другим экранам и кнопке "Домой" соответственно....
@Override
public void onPause()
{
super.onPause();
if(ourSong.isPlaying())
ourSong.stop();
else
return;
}
@Override
public void onStop()
{
super.onStop();
if(ourSong.isPlaying())
ourSong.stop();
else
return;
}
Переопределите метод onPause действия и остановите вызов на MediaPlayer.
Вы должны переопределить метод onKeyDown() и проверить keyevent, если это домашний ключ или кнопка возврата, и внутри этого метода остановите ваш медиаплеер, затем отпустите его. mp.stop (); mp.release ();
Проверьте, что вы хотите сделать на onPause. Пример:
protected void onPause() {
super.onPause();
ourSong.stop();
}
Вы, вероятно, должны поставить
if (player != null && player.isPlaying()) {
player.stop();
player.release();
player = null;
}
внутри вашего метода onStop() или onDestroy() вашей деятельности.
Если вы положите его в onStop()
звук останавливается при нажатии кнопки "Домой" (или в любое другое время, когда звонит телефон, возможно).
Если вы положите его в onDestroy()
он будет продолжать играть до тех пор, пока система не будет нуждаться в ресурсах, которые использует ваше приложение. В любом случае это хорошая идея, чтобы ваше приложение не удерживало ресурсы MediaPlayer, если пользователь по какой-либо причине не нажимает кнопку остановки.