如何为ToggleButton
或普通Button
申请启动/停止功能?
问题是它在第一次尝试后没有停止/启动!它只能工作一次(每次用户点击按钮时都应该更改)。
Music ToggleButton
<ToggleButton
android:id="@+id/music"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="ToggleButton" />
背景音乐功能
fun BackgroundMusic() {
val mp = MediaPlayer.create(this, R.raw.sudani)
mp.start()
music.setOnClickListener {
if (mp.isPlaying) {
mp.stop()
} else if (!mp.isPlaying) {
mp.start()
}
}
}
答案 0 :(得分:1)
请深入了解MediaPlayer javadoc。 在那里你可以读到这样的东西:
调用stop()会停止播放并导致处于Started,Paused,Prepared或PlaybackCompleted状态的MediaPlayer进入Stopped状态。
- 一旦处于Stopped状态,在调用prepare()或prepareAsync()将MediaPlayer对象再次设置为Prepared状态之前,无法开始播放。
基本上这意味着您必须在再次致电prepare()
之前致电start()
:
fun BackgroundMusic() {
val mp = MediaPlayer.create(this, R.raw.sudani)
mp.start()
music.setOnClickListener {
if (mp.isPlaying) {
mp.stop()
} else if (!mp.isPlaying) {
try {
mp.prepare()
mp.start()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
}