4

SoundPool クラスを使用して複数の効果音を再生するのに問題があります。基本的に私は、ユーザーが画面上のオブジェクトの束をタップするリアルタイム ゲームを作成しています。プレイヤーがオブジェクトに触れるたびに、サウンドを再生する必要があります。そこで、SoundPool クラスに目を向けました。以下は私のコードです:

private SoundPool mSoundPool;
private int mSoundId;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    PreferencesManager.getInstance(this);

    setContentView(R.layout.arcademode);
    initialize();
}

private void initialize() {
    this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
    mSoundPool = new SoundPool(mBalloonPopCount, R.raw.pop, 0);
    mSoundId = mSoundPool.load(this, R.raw.pop, 1);
}

private void playSound() {
    float actualVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    float maxVolume = (float) audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    float volume = actualVolume / maxVolume;
    mSoundPool.play(mSoundId, volume, volume, 1, 0, 1f);
}

メソッドが呼び出されるたびに、playSound()何も聞こえなくなりました。LogCat を調べると、次の行が表示されます。

08-14 19:48:50.117: ERROR/AudioFlinger(2613): invalid stream type
08-14 19:48:50.117: ERROR/AudioTrack(15611): AudioFlinger could not create track, status: -22
08-14 19:48:50.117: ERROR/SoundPool(15611): Error creating AudioTrack

問題のオーディオ ファイルは.wavファイルです。.oggファイルと.mp3ファイルも試しましたが、どちらも機能しません。サウンド ファイルは非常に小さいため (.wav ファイルは 60 KB も使用しません)、サイズは問題ではありません...

4

2 に答える 2

3
mSoundPool = new SoundPool(mBalloonPopCount, R.raw.pop, 0);

する必要があります

mSoundPool = new SoundPool(mBalloonPopCount, AudioManager.STREAM_MUSIC, 0);
于 2012-01-11T14:47:41.340 に答える