У меня есть кнопка, и я хочу управлять несколькими объектами MediaPlayer с помощью этой кнопки. Например, пользователь выбрал 3 звука из списка, и когда они воспроизводятся, пользователь нажимает кнопку значка паузы, и все звуки должны приостанавливаться (и ресурс кнопки паузы должен измениться на значок воспроизведения). Если пользователь снова щелкает по значку воспроизведения, все звуки должны продолжаться.
Если я удаляю остальную часть в моем коде, я могу достичь тех пауз, которые воспроизводятся в данный момент, но если я нажму снова, чтобызвуки кнопки воспроизведения не воспроизводятся, и ничего не происходит.
Мой XML:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageButton
android:id="@+id/stop_all_sound"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:src="@drawable/pause_button" />
</LinearLayout>
Мой код:
stop_all_sound.setOnClickListener {
// List of sounds
val list = arrayListOf(sound1, sound2, sound3, sound4)
// List for playing sounds
val playingSounds = arrayListOf<MediaPlayer>()
list.forEach { sound ->
if (sound.isPlaying) {
// If sound is playing add it to the playingSounds list
playingSounds.add(sound)
for (playingSound in playingSounds) {
// Pause that playing sounds currently
playingSound.pause()
stop_all_sound.setImageResource(R.drawable.play_button)
}
}
// I couldn't figured out this part. I guess playingSounds list is empty
else {
for (playingSound in playingSounds) {
playingSound.start()
stop_all_sound.setImageResource(R.drawable.pause_button)
}
}
}
}
Обновление
Кчтобы было более понятно, скажем, есть список MediaPlayer
и Button
- Если
MediaPlayer
не находится в состоянии воспроизведения, значок Button
будет play_button, в противном случае pause_button
Мне нужно следующее поведение MediaPlayer
с при нажатии Button
:
- Если нет MediaPlayer воспроизводится и нет MediaPlayer находится в состоянии паузы, все MediaPlayer начнет воспроизведение
- Если no MediaPlayer воспроизводится и некоторые MediaPlayer находится в состоянии паузы, все приостановленные MediaPlayer начнут воспроизводиться
- Если некоторые MediaPlayer воспроизводится и no MediaPlayer находится в состоянии паузы, все воспроизводимые MediaPlayer будут приостановлены