Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 发动机声音有时才起作用_Android_Audio_Andengine - Fatal编程技术网

Android 发动机声音有时才起作用

Android 发动机声音有时才起作用,android,audio,andengine,Android,Audio,Andengine,我在onCreateResources方法中加载了一个声音 try { shield = MusicFactory.createMusicFromAsset(this.getMusicManager(), this, "shield.ogg"); } catch (IOException e) { e.printStackTrace(); } shield.setVolume(1.0f); shield.setLooping(true); 当我第一次播放声

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

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

shield.setVolume(1.0f);
shield.setLooping(true);
当我第一次播放声音时,它工作正常,但是,接下来的几次播放时,如果它工作与否,它似乎是随机的

我使用
shield.play()
播放声音并
屏蔽.stop()
再次停止。 当它不起作用时,我会在日志中看到以下内容

AudioFlinger无法创建曲目,状态:-12

创建音轨时出错


您不能将MusicFactory用于声音效果。这完全是为了音乐。
你应该使用SoundFactory

以下是一个例子:

Sound sound = SoundFactory.createSoundFromAsset(getSoundManager(), this, "sound.wav");

播放背景音乐时使用音乐,控制长时间播放,重复。。 播放短音频时使用声音,例如按下按钮或拍摄…等 下面是我使用这两种方法编写的相同代码:

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);
    }
}

如果我将looping设置为false,那么它每次都会播放。我的印象是音乐工厂和SoundFactory做了同样的事情。它只允许声音超过5秒。无论如何,这给了我同样的结果。我仍然会在声音不播放的地方出现随机错误