我在使用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)因此大小不是问题...
你有没有想过问题是什么?我有同样的问题,不能解决它。 –