SoundPool не воспроизводит звук (в отличие от MediaPlayer) - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь воспроизвести звук в приложении.Однако с помощью SoundPool я не могу этого сделать.Код действительно прост, и я не вижу, где он может потерпеть неудачу.

Подобный код, но с использованием MediaPlayer работает, но меня интересует использование SoundPool.

Код SoundPool:

private void playSound2(){
    SoundPool sp = new SoundPool.Builder().build();
    int soundID = sp.load(MainActivity.this, R.raw.sound, 1);
    sp.play(soundID, 1, 1, 1, 0, 1);
}

Контекст:

public void goButtonClick(View view){
    Button goButton = findViewById(id.button2);
    if (onGoing){
        goButton.setText("GO!");
    } else {
        goButton.setText("STOP");
        //playSound();   // MediaPlayer
        playSound2();    // SoundPool
    }
    onGoing = !onGoing;
}

Версия MediaPlayer (работает):

private void playSound(){
    MediaPlayer mediaPlayer;
    mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.sound);
    mediaPlayer.start();
}

1 Ответ

0 голосов
/ 19 марта 2019

Решено!

Мне не хватило дождаться загрузки звукового файла в soundPool.Правильный код:

private void playSound2() {
    SoundPool sp = new SoundPool.Builder().build();
    int soundID = sp.load(MainActivity.this, raw.sound, 1);
    sp.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool sp, int soundID, int i1) {
            sp.play(soundID, 1, 1, 1, 0, 1);
        }
    });
}
...