ボタンをタッチした後で音を再生したいと思います。 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;
}
}
あなたが呼び出すことで、これを使用します。
SoundPoolPlayer sound = new SoundPoolPlayer(this);
をあなたの活動の中でのonCreate()(またはいつでも後)。あなたが音で終わったら
がsound.playShortResource(R.raw.<sound_name>);
最後に、呼び出し:その後、音の単純なコールを再生するには
sound.release();
は、リソースを解放します。
それはうまく動作しますが、私は2つの質問があります。 1.私は毎回(MediaPlayerのように)使用した後にリベースする必要があります。 2.サンプルを止める方法はありますか? – 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