Android: воспроизведение аудиоклипа на клике - PullRequest
28 голосов
/ 15 июня 2010

Как настроить аудиофайл для воспроизведения, когда пользователь касается изображения.

Где мне хранить аудиофайл и какой код использовать для его воспроизведения? Я не хочу вызывать интерфейс MediaPlayer или что-то в этом роде.

Я думал о том, чтобы сделать это так:

foo = (ImageView)this.findViewById(R.id.foo);
    foo.setOnClickListener(this);

public void onClick(View v) {
if (foo.isTouched()) {

 playAudioFile();
  }
}

Спасибо

Ответы [ 2 ]

60 голосов
/ 15 июня 2010

Это не создаст интерфейс MediaPlayer ... он просто воспроизведет нужный вам звук.

Button boton = (Button) findViewById(R.id.boton);
boton.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
  MediaPlayer mp = MediaPlayer.create(TestSonido.this, R.raw.slayer);  
  mp.start();
 }
});

В этом случае R.raw.slayer представляет аудиофайл с именем slayer.mp3это хранится в папке res/raw/, и как только вы нажмете кнопку, дроид покачнется ...

1 голос
/ 27 января 2019

Вы также можете добиться того же, используя SoundPool.

MediaPlayer сначала загружает все данные звука в память, а затем воспроизводит их, поэтому при частом переключении между звуками возникает некоторая задержка.

SoundPool - лучший вариант со звуковым файлом небольшого размера и дает лучший результат с .ogg медиа-файлом.

SoundPool pl = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
        // 5 indicates the maximum number of simultaneous streams for this SoundPool object
pl.setOnLoadCompleteListener(new OnLoadCompleteListener() {             
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                // The onLoadComplet method is called when a sound has completed loading.
                soundPool.play(sampleId, 1f, 1f, 0, 0, 1);
                // second and third parameters indicates left and right value (range = 0.0 to 1.0)
            }
});

Button btn = findViewById(R.id.boton);
btn.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {

     int sound = pl.load(this, R.raw.sound_01, 0);

 }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...