我该怎么做 kotlin mediaPlayer 随机播放
How can I do the kotlin mediaPlayer shuffle play
我正在尝试为音乐播放器应用程序创建随机播放模式。问题是;我列表中的声音只播放一次并在结束时停止。但我希望列表中的所有声音都能自动随机播放。我对 Android 编程很陌生,我很努力但失败了。我还尝试了 setOnCompletionListener {} 方法,但它没有用。我需要帮助。谢谢大家
这是我的示例代码;
class MainActivity : AppCompatActivity() {
var mediaPlayer = MediaPlayer()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val Sound1 = R.raw.sound01
val Sound2 = R.raw.sound02
val Sound3 = R.raw.sound03
val Sound4 = R.raw.sound04
val Sound5 = R.raw.sound05
val soundList = ArrayList<Int>()
soundList.add(Sound1)
soundList.add(Sound2)
soundList.add(Sound3)
soundList.add(Sound4)
soundList.add(Sound5)
shuffleBtn.setOnClickListener {
val randomList = Random.nextInt(soundList.size)
val sound = soundList.get(randomList)
mediaPlayer = MediaPlayer.create(this, sound)
mediaPlayer.start()
}
}
}
添加释放原始播放器并创建新播放器的完成侦听器。
如果您想随机播放,您需要一个变量来存储随机播放的列表并在播放时删除曲目,以便您知道何时重新随机播放。您选择随机声音的方式,有时您可以连续播放相同的声音两次。
顺便说一下,您可以更简洁地创建列表。
我没有测试这段代码。对于任何错误,我们深表歉意。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val sounds = listOf(
R.raw.sound01,
R.raw.sound02,
R.raw.sound03,
R.raw.sound04,
R.raw.sound05
)
var shuffledSounds = sounds.shuffled()
fun newTrack() {
if (shuffledSounds.isEmpty()) {
shuffledSounds = sounds.shuffled()
}
val nextSound = shuffledSounds.first()
shuffledSounds = shuffledSounds - nextSound
mediaPlayer = MediaPlayer.create(this, nextSound).apply {
setOnCompletionListener{
it.release()
newTrack()
}
start()
}
}
shuffleBtn.setOnClickListener {
newTrack()
}
}
我正在尝试为音乐播放器应用程序创建随机播放模式。问题是;我列表中的声音只播放一次并在结束时停止。但我希望列表中的所有声音都能自动随机播放。我对 Android 编程很陌生,我很努力但失败了。我还尝试了 setOnCompletionListener {} 方法,但它没有用。我需要帮助。谢谢大家
这是我的示例代码;
class MainActivity : AppCompatActivity() {
var mediaPlayer = MediaPlayer()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val Sound1 = R.raw.sound01
val Sound2 = R.raw.sound02
val Sound3 = R.raw.sound03
val Sound4 = R.raw.sound04
val Sound5 = R.raw.sound05
val soundList = ArrayList<Int>()
soundList.add(Sound1)
soundList.add(Sound2)
soundList.add(Sound3)
soundList.add(Sound4)
soundList.add(Sound5)
shuffleBtn.setOnClickListener {
val randomList = Random.nextInt(soundList.size)
val sound = soundList.get(randomList)
mediaPlayer = MediaPlayer.create(this, sound)
mediaPlayer.start()
}
}
}
添加释放原始播放器并创建新播放器的完成侦听器。
如果您想随机播放,您需要一个变量来存储随机播放的列表并在播放时删除曲目,以便您知道何时重新随机播放。您选择随机声音的方式,有时您可以连续播放相同的声音两次。
顺便说一下,您可以更简洁地创建列表。
我没有测试这段代码。对于任何错误,我们深表歉意。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val sounds = listOf(
R.raw.sound01,
R.raw.sound02,
R.raw.sound03,
R.raw.sound04,
R.raw.sound05
)
var shuffledSounds = sounds.shuffled()
fun newTrack() {
if (shuffledSounds.isEmpty()) {
shuffledSounds = sounds.shuffled()
}
val nextSound = shuffledSounds.first()
shuffledSounds = shuffledSounds - nextSound
mediaPlayer = MediaPlayer.create(this, nextSound).apply {
setOnCompletionListener{
it.release()
newTrack()
}
start()
}
}
shuffleBtn.setOnClickListener {
newTrack()
}
}