【发布时间】:2018-12-10 07:55:02
【问题描述】:
我有一个用于动态壁纸的 android 应用程序,用户可以在其中动态播放和停止音乐。我正在使用 libgdx,并且在我的类的 render() 方法中开始音乐,从 libgdx 实现 ApplicationListener。
我正在检查渲染方法中的共享首选项,以检查播放音乐选项是启用还是禁用。如果启用,我创建音乐(如果尚未创建或未播放),如果禁用,我检查音乐是否正在播放 - 如果是,我调用 music.stop()。但是,即使在调用 music.stop() 之后,音乐也会继续播放。我尝试设置 music.setLooping(false) 但音乐循环继续播放。
这是我的代码:
public class MyAppListener implements ApplicationListener, InputProcessor {
Music music;
@Override
public void render() {
if (shouldPlayMusic) {
if (music == null || !music.isPlaying()) {
music = Gdx.audio.newMusic(Gdx.files.internal("playback.mp3"));
music.setVolume(0.5f);
music.setLooping(true);
music.play();
}
} else {
if (music != null && music.isPlaying()) {
music.setLooping(false);
music.stop();
music.dispose();
music = null;
}
}
}
奇怪的行为: 当我的 shouldPlayMusic = false/true 时,以及当我去其他活动时,音乐分别停止/继续,当我回来时,无论 shouldPlayMusic 的值如何,音乐都会继续播放。
【问题讨论】: