ボタンをタッチして音を鳴らしたいのですが。MediaPlayerは正常に動作しますが、このライブラリは(音楽のように)長い.wav用であるとどこかで読みました。
短い.wav(2〜3秒)を再生するためのより良い方法はありますか?
ボタンをタッチして音を鳴らしたいのですが。MediaPlayerは正常に動作しますが、このライブラリは(音楽のように)長い.wav用であるとどこかで読みました。
短い.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();
リソースを解放します。