我想在觸摸按鈕後播放聲音。 MediaPlayer工作正常,但是我在某處看到這個庫很長時間.wav(如音樂)。播放簡短的.wav文件 - Android
有沒有更好的方法來播放簡短的.wav(2-3秒)?
我想在觸摸按鈕後播放聲音。 MediaPlayer工作正常,但是我在某處看到這個庫很長時間.wav(如音樂)。播放簡短的.wav文件 - Android
有沒有更好的方法來播放簡短的.wav(2-3秒)?
SoundPool是正確的類。下面的代碼是如何使用它的一個例子。這也是我在我的幾個應用程序中用來管理聲音的代碼。你可以聽起來像你想的那樣(或作爲記憶許可)。
public class SoundPoolPlayer {
private SoundPool mShortPlayer= null;
private HashMap mSounds = new HashMap();
public SoundPoolPlayer(Context pContext)
{
// setup Soundpool
this.mShortPlayer = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
mSounds.put(R.raw.<sound_1_name>, this.mShortPlayer.load(pContext, R.raw.<sound_1_name>, 1));
mSounds.put(R.raw.<sound_2_name>, this.mShortPlayer.load(pContext, R.raw.<sound_2_name>, 1));
}
public void playShortResource(int piResource) {
int iSoundId = (Integer) mSounds.get(piResource);
this.mShortPlayer.play(iSoundId, 0.99f, 0.99f, 0, 0, 1);
}
// Cleanup
public void release() {
// Cleanup
this.mShortPlayer.release();
this.mShortPlayer = null;
}
}
你會通過調用使用:在活動的onCreate
SoundPoolPlayer sound = new SoundPoolPlayer(this);
()(或之後的任何時間的話)。在這之後,播放聲音簡單的調用:
sound.playShortResource(R.raw.<sound_name>);
最後,一旦你用聲音做了,呼籲:
sound.release();
以釋放資源。
它工作得很好,但我有兩個問題。 1.每次使用後(例如MediaPlayer)或者當我從應用程序//活動中退出時,我必須重新啓動?有什麼辦法可以停止抽樣? – CookieMonssster
您應該只在完成整個應用程序會話的任何聲音播放時釋放它(所以onDestroy()將是一個不錯的選擇)。您可以添加一個使用SoundPools的[pause()方法](http://developer.android.com/reference/android/media/SoundPool.html#pause(int))的pause()方法。 –
這很容易。 FWIW,Eclipse爲'mSounds'建議'SparseIntArray()'以獲得更好的性能,所以這就是我所做的。 –
是的,['SoundPool'](http://developer.android.com/reference/android/media/SoundPool.html)是要走的路。 – kcoppock