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
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();
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.
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...
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); } });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With