Android: воспроизведение аудиоклипа onClick
Как настроить аудиофайл для воспроизведения, когда пользователь касается изображения.
Где я должен хранить аудиофайл и какой код использовать для фактического воспроизведения файла?
Я не хочу вызывать интерфейс MediaPlayer или что-то в этом роде.
Я думал сделать это вот так:
foo = (ImageView)this.findViewById(R.id.foo);
foo.setOnClickListener(this);
public void onClick(View v) {
if (foo.isTouched()) {
playAudioFile();
}
}
Спасибо
Ответы
Ответ 1
Это не приведет к созданию интерфейса 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/
, и как только вы нажимаете кнопку, дроид будет качать вас...
Ответ 2
Вы также можете добиться того же, используя 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);
}
});
Ответ 3
public void aud_play(View view) {
if (mp.isPlaying()) {
//this if condition does not allow the audio file to be played
multiple times on multiple clicks of **Play button**
}
else {
//else the **Play button** plays the audio file
mp = MediaPlayer.create(this, R.raw.audio_name);
mp.start();
}
}