你可能會喜歡使用SoundPool類。它可以在播放聲音時減少延遲,並提供其他細節,例如當有太多不能一次播放的聲音時,可以對聲音進行優先排序。
從文檔:
甲的Soundpool是可以從APK內部或從文件系統中的文件的資源被加載到存儲器的樣本的集合。 SoundPool庫使用MediaPlayer服務將音頻解碼爲原始16位PCM單聲道或立體聲流。這允許應用程序隨壓縮流一起提供,而不必在播放過程中承受CPU負載和解壓延遲。
例如:
/**
* How many sounds can be played at once.
*/
private static final int MAX_SOUND_POOL_STREAMS = 4;
/**
* Modify this as part of your own priority scheme. Higher numbers mean higher
* priority. If you don't care, it's okay to use the same priority for every
* sound.
*/
private static final int NORMAL_PRIORITY = 10;
private int mySoundId;
@Override
public void setupContent() {
this.soundPool = new SoundPool(MAX_SOUND_POOL_STREAMS,
AudioManager.STREAM_MUSIC, 100);
this.mySoundId = this.soundPool.load(this.getApplicationContext(),
R.raw.mySound, 1);
}
@Override
private void playMySound() {
this.soundPool.play(this.mySoundId, 1, 1, NORMAL_PRIORITY, 0, 1);
}
把logcat輸出放在這裏,否則我們無法識別錯誤。 – 2010-11-12 06:53:27