У меня есть деки с несколькими кнопками (около 17), каждая из которых связана со звуком .mp3.
Проблема в том, что когда воспроизводится звук, и я нажимаю другую кнопку, оба затем воспроизводятся в фоновом режиме.
Я хотел бы иметь возможность остановить воспроизводимый звук и запустить новыйодин, когда нажата другая кнопка.Кроме того, есть ли возможность остановить текущий воспроизводимый звук повторным нажатием на его кнопку?
Кроме того, мне не очень нравится раздел кода, который гласит: private MediaPlayer [] mPlayers = new MediaPlayer [17];
Число (в данном случае 17), определяет количество раз воспроизведения звуков.После этого никакие дальнейшие звуки не воспроизводятся.Есть ли способ сделать это неопределенным?
Вместо того, чтобы вставлять весь код из своей деятельности, я прикрепил существенный код и пронумеровал его в том порядке, в котором он указан в моем основном файле активности .java.
Спасибо за вашупомогите всем.
private int mNextPlayer = 0;
2) a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.startAnimation(animAlpha);
startSound(R.raw.likethebattle);
}
});
3) public void onDestroy() {
super.onDestroy(); // <---------------------- This needed to be there
for (int i = 0; i < mPlayers.length; ++i)
if (mPlayers[i] != null)
try {
mPlayers[i].release();
mPlayers[i] = null;
} catch (Exception ex) {
// handle...
}
}
4) private void startSound(int id) {
try {
if (mPlayers[mNextPlayer] != null) {
mPlayers[mNextPlayer].reset();
mPlayers[mNextPlayer].prepare();
mPlayers[mNextPlayer].stop();
mPlayers[mNextPlayer].release();
mPlayers[mNextPlayer] = null;
}
mPlayers[mNextPlayer] = MediaPlayer.create(this, id);
mPlayers[mNextPlayer].start();
} catch (Exception ex) {
// handle
} finally {
++mNextPlayer;
mNextPlayer %= mPlayers.length;
}
}