У меня есть 2 кнопки, которые воспроизводят звуки, с кодировкой следующим образом:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.layout1);
buttonSound1 = MediaPlayer.create(Violin.this,R.raw.violin1);
buttonSound2 = MediaPlayer.create(Violin.this,R.raw.violin2);
...
}
Затем при нажатии кнопки:
button1.setOnClickListener(new OnClickListener()
{
public void onClick(View view)
{
if (b1 %2 == 0)
{
button1.setText("STOP!");
button2.setText("Song 2");
if(buttonSound1.isPlaying()) buttonSound1.stop();
if(buttonSound2.isPlaying()) {buttonSound2.stop(); b2++;}
buttonSound1 = MediaPlayer.create(Violin.this,R.raw.violin1);
buttonSound1.start();
}
else
{
button1.setText("Song 1");
button2.setText("Song 2");
if(buttonSound1.isPlaying()) buttonSound1.stop();
if(buttonSound2.isPlaying()) {buttonSound2.stop(); b2++;}
}
b1++;
}
});
При уничтожении:
@Override
protected void onDestroy()
{
// stop the sounds
if(buttonSound1.isPlaying()) buttonSound1.stop(); buttonSound1.release();
if(buttonSound2.isPlaying()) buttonSound2.stop(); buttonSound2.release();
super.onDestroy();
}
Вопрос:
Когда кнопка 1 воспроизводит звук, звук кнопки 2 должен быть остановлен, и наоборот.
Когда я заканчиваю действие (уничтожается), звук все еще воспроизводится до конца без остановки.
Я сомневаюсь, что это связано с тем, что buttonSound1 создается внутри onClickListener
и, следовательно, не может быть остановлен при уничтожении? Я пытался удалить такие MediaPlayer.create
строк, но затем, когда нажимается кнопка 1, чтобы остановить звук, при повторном нажатии для воспроизведения он просто больше не может воспроизводить звуки.
Как можно изменить вышеизложенное так, чтобы:
- кнопка 1 играет, то кнопка 2 должна быть остановлена, и наоборот
- Звуки кнопок 1 и 2 будут остановлены сразу после завершения действия.
Спасибо!
onDestroyed()
вызывается? - person Greg Giacovelli   schedule 28.12.2013MediaPlayer
и отслеживать его, а не по одному для каждой песни. - person Greg Giacovelli   schedule 28.12.2013