Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: Playing an audio clip onClick

Tags:

android

audio

How do I set up an audiofile to play when a user touches an image.

Where should I store the audio file and what code should I use to actually play the file? I don't want to bring up the MediaPlayer interface or anything like that.

I was thinking of doing it like this:

foo = (ImageView)this.findViewById(R.id.foo);     foo.setOnClickListener(this);  public void onClick(View v) { if (foo.isTouched()) {   playAudioFile();   } } 

Thanks

like image 496
Sachin Avatar asked Jun 15 '10 00:06

Sachin


People also ask

How do I play music from URL on Android?

String fileUrl = "http://192.168.1.131/myproject/songs/xyz"; String url = "http://myserver/songs/xyz"; //(myserver -> A remote server) mVideoView. setVideoURI(Uri. parse(fileUrl)); mVideoView. requestFocus();

How do I play audio files on Android?

Step 1: Firstly, update the music app on your Android smartphone. Step 2: Open the YouTube music app and click on the Settings option. Step 3: In the Settings category, press the 'Library and downloads' option. Step 4: Activate the option 'Show device files' in the library and download option.


Video Answer


2 Answers

This won't create a bring up the MediaPlayer interface... it will just play the sound you want.

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

In this case, R.raw.slayer represents an audio file called slayer.mp3 that is stored in the res/raw/ folder and once you click the button the droid will rock you...

like image 72
Cristian Avatar answered Oct 01 '22 08:10

Cristian


You can also achieve the same using SoundPool.

MediaPlayer first loads the whole sound data in memory then play, so it produces some lag when we switch among sounds frequently.

SoundPool is a better option with small size sound file and produces better result with .ogg media file.

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);   } }); 
like image 26
Aashish Avatar answered Oct 01 '22 08:10

Aashish