如何使用 ToggleButton 应用 start/stop 声音方法?
How to apply start/stop sound method using ToggleButton?
如何为 ToggleButton
或普通 Button
应用 start/stop 函数?
问题是它在第一次尝试后没有 stop/start!它只工作一次(每次用户单击按钮时它都应该改变)。
音乐切换按钮
<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()
}
}
}
请深入了解MediaPlayer javadoc。
在那里你可以阅读这样的内容:
Calling stop() stops playback and causes a MediaPlayer in the Started, Paused, Prepared or PlaybackCompleted state to enter the Stopped state.
- Once in the Stopped state, playback cannot be started until prepare() or prepareAsync() are called to set the MediaPlayer object to the Prepared state again.
基本上这意味着您必须在再次调用 start()
之前调用 prepare()
:
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()
}
}
}
}
如何为 ToggleButton
或普通 Button
应用 start/stop 函数?
问题是它在第一次尝试后没有 stop/start!它只工作一次(每次用户单击按钮时它都应该改变)。
音乐切换按钮
<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()
}
}
}
请深入了解MediaPlayer javadoc。 在那里你可以阅读这样的内容:
Calling stop() stops playback and causes a MediaPlayer in the Started, Paused, Prepared or PlaybackCompleted state to enter the Stopped state.
- Once in the Stopped state, playback cannot be started until prepare() or prepareAsync() are called to set the MediaPlayer object to the Prepared state again.
基本上这意味着您必须在再次调用 start()
之前调用 prepare()
:
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()
}
}
}
}