Как остановить звук моего MediaPlayer, когда приложение закрывается?
У меня три вопроса.
Как я могу сделать так, чтобы звук моего MediaPlayer останавливался, когда я переключал / закрывал приложение / активность?
Как я могу сделать так, чтобы sound1 останавливался при нажатии на sound2?
Как мне остановить и воспроизвести звук на одной кнопке? Я имею в виду, что когда я нажимаю кнопку 1 один раз, тогда начинается звук, а когда я нажимаю его снова, звук останавливается и так далее.
Я уже попробовал, но это не сработало.
Вот мой MainActivity:
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button button1;
Button button2;
boolean w;
boolean b;
private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button2= (Button) findViewById(R.id.button2);
w = true;
b = true;
//Button1
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(b == true){
mp= MediaPlayer.create(MainActivity.this, R.raw.song1);
mp.start();
b = false;
}else{
mp.stop();
b = true;
}
}
});
//Button 2
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(w == true){
mp= MediaPlayer.create(MainActivity.this, R.raw.sound2);
mp.start();
w = false;
}else{
mp.stop();
w = true;
}}
});
}
//Stopping the sound when switching or closing the App
@Override
public void onPause() {
mp.stop();
super.onPause();
}
}
Можете ли вы сказать мне, как решить мои проблемы?
Я новичок в Android Studio и прошу прощения за мой плохой английский:)
2 ответа
Сначала обратитесь к этой статье https://developer.android.com/guide/topics/media/mediaplayer.html
1.
public void onDestroy() {
if (mp!=null) {
mp.stop();
mp.release();
}
}
2.
//Stop media player
mp.stop();
// Set data source of sound 2
mp.setDataSource(url2);
mp.prepare();
mp.start();
3.
//Pause the sound
mp.pause();
//Resume the sound
mp.start();
Ответ кажется довольно простым: сохраните ссылку на свой медиаплеер. В настоящее время вы создаете новый MediaPlayer каждый раз. Но вы также должны быть осторожны с состоянием MediaPlayer, оно довольно придирчиво.
Возьмите этот пример потока:
- Запустить приложение > [mp = null, b = false, w = false]
- Нажмите кнопку 1 > [mp = instance1, b = true, w = false]> [instance1 играет]
- Нажмите кнопку 2 > [mp = instance2, b = true, w = true]> [instance1 воспроизводится, instance2 воспроизводится]
- Нажмите кнопку 1 > [mp = instance2, b = false, w = true]> [instance1 воспроизводится, instance2 остановлен]
- Приостановить работу приложения > [mp = instance2, b = false, w = true]> [instance1 воспроизводится, instance2 остановлен]
Также важно освободить () ваш медиаплеер, когда вы делаете паузу