Я хочу играть звук после касания кнопки. 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();
чтобы освободить ресурсы.