我在使用SoundPool類播放多種音效方面遇到問題。基本上我正在製作一個實時遊戲,涉及用戶在屏幕上點擊一堆物體。每當玩家觸碰一個物體時,我都需要播放聲音。所以我轉向了SoundPool類。下面是我的代碼:Android 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文件甚至不佔用60KB)因此大小不是問題...
你有沒有想過問題是什麼?我有同樣的問題,不能解決它。 –