Comment configurer un fichier audio pour qu'il soit lu lorsqu'un utilisateur touche une image.
Où devrais-je stocker le fichier audio et quel code dois-je utiliser pour lire le fichier? Je ne souhaite pas afficher l'interface MediaPlayer ou quoi que ce soit du genre.
Je pensais le faire comme ceci:
foo = (ImageView)this.findViewById(R.id.foo);
foo.setOnClickListener(this);
public void onClick(View v) {
if (foo.isTouched()) {
playAudioFile();
}
}
Merci
Cela ne créera pas d’affichage de l’interface MediaPlayer ... il ne fera que reproduire le son que vous voulez.
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();
}
});
Dans ce cas, R.raw.slayer
représente un fichier audio appelé slayer.mp3
qui est stocké dans le dossier res/raw/
et une fois que vous avez cliqué sur le bouton, le droïde vous basculera ...
Vous pouvez également obtenir la même chose en utilisant SoundPool
.
MediaPlayer
charge d'abord l'intégralité des données audio en mémoire, puis les lit. Il en résulte un décalage lorsque nous basculons fréquemment entre les sons.
SoundPool
est une meilleure option avec un fichier son de petite taille et produit un meilleur résultat avec le fichier multimédia .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);
}
});