Воспроизведение коротких файлов.wav - Android

Я хотел бы играть звук после прикосновения к кнопке. MediaPlayer работает нормально, но я где-то читал, что эта библиотека долго.wav (как музыка).

Есть ли лучший способ сыграть короткую.wav(2-3 сек.)?

1 ответ

Решение

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();

освободить ресурсы.

Другие вопросы по тегам