1

我在 onCreateResources 方法中加载了一个声音。

try {
    shield = MusicFactory.createMusicFromAsset(this.getMusicManager(), this, "shield.ogg");
} catch (IOException e) {
    e.printStackTrace();
}

shield.setVolume(1.0f);
shield.setLooping(true);

当我第一次播放声音时它可以正常工作,但是,接下来我播放的时间是否有效似乎是随机的。

shield.play();用来播放声音并shield.stop();再次停止它。当它不起作用时,我在日志中得到以下信息。

AudioFlinger 无法创建轨道,状态:-12

创建 AudioTrack 时出错

4

2 回答 2

2

播放背景音乐时使用音乐,它将控制长时间播放,重复.. 播放短音频时使用声音,例如按下按钮或拍摄..等这是我使用它们的相同代码:

public static void controlBgAudio(boolean play, boolean repeat) {
    Music ms = ResourceManager.getInstance().audioBgMusic;
    if (play) {
        if (ms.isReleased()) {
            ms.resume();
        } else {
            ms.play();
        }
    } else {
        if (ms.isPlaying()) {
            ms.pause();
        } else {
            ms.stop();
        }
    }

    if (repeat) {
        ms.setLooping(true);
    } else {
        ms.setLooping(false);
    }
}

public static void controlShootAudio(boolean play, boolean repeat) {
    Sound ms = ResourceManager.getInstance().audioShoot;
    if (play) {
        if (ms.isReleased()) {
            ms.resume();
        } else {
            ms.play();
        }
    } else {
        if (ms.isLoaded()) {
            ms.pause();
        } else {
            ms.stop();
        }
    }

    if (repeat) {
        ms.setLooping(true);
    } else {
        ms.setLooping(false);
    }
}
于 2015-08-06T02:52:21.077 回答
0

您不会将 MusicFactory 用于音效。它严格用于音乐。
您应该使用 SoundFactory。

这是一个例子:

Sound sound = SoundFactory.createSoundFromAsset(getSoundManager(), this, "sound.wav");
于 2013-06-03T18:55:15.573 回答