I have a mp3 file in my android mobile, lets it's a xyz.mp3 somewhere in my sdcard. How to play it through my application?
Asked
Active
Viewed 1.2e+01k times
64

A-Sharabiani
- 17,750
- 17
- 113
- 128

dIvYaNsH sInGh
- 1,943
- 3
- 21
- 40
-
You may also put `xyz.mp3` into `res/raw/` and then reference it via `R.raw.xyz`. However, then you have two choices: `MediaPlayer` and `SoundPool`. For efficient memory management, you should use a library to work with those classes: https://github.com/delight-im/Android-Audio – caw Apr 01 '15 at 22:44
5 Answers
125
Simply you can use MediaPlayer
and play the audio file. Check out this nice example for playing Audio:
public void audioPlayer(String path, String fileName){
//set up MediaPlayer
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource(path + File.separator + fileName);
mp.prepare();
mp.start();
} catch (Exception e) {
e.printStackTrace();
}
}

Lalit Poptani
- 67,150
- 23
- 161
- 242
-
9for GUI You have to go for yourself and take help of images and all through layout. – Android Killer Sep 03 '11 at 07:56
-
107
-
3
-
6You should never use "/". You should always use `File.separator` instead. – Greyson Parrelli Sep 09 '15 at 15:14
-
-
The kind of things I enjoy. It worked for the first test, and as I used to have a full path which included a name I did my code this way public void audioPlayer(String path){ //set up MediaPlayer MediaPlayer mp = new MediaPlayer(); try { mp.setDataSource(path ); mp.prepare(); mp.start(); } catch (Exception e) { e.printStackTrace(); } } – ilidiocn Nov 13 '21 at 11:30
18
If the audio is in the local raw resource:
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); // no need to call prepare(); create() does that for you
To play from a URI available locally in the system:
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();

A-Sharabiani
- 17,750
- 17
- 113
- 128
11
@Niranjan, If you are using a raw file from res/raw folder, ie., reading a file stored inside the project, we can use:
mediaplayer.setDataSource(context, Uri.parse("android.resource://urpackagename/res/raw/urmp3name");
If you have to use from SD card:
MediaPlayer mediaPlayer = new MediaPlayer();
File path = android.os.Environment.getExternalStorageDirectory();
mediaPlayer.setDataSource(path + "urmp3filename");
See this related question: MediaPlayer issue between raw folder and sdcard on android
-
If you let me know why -1, I will learn whats wrong with the above answer? – Suv Feb 16 '15 at 06:19
-
2Probably the -1 is because you posted an answer to the original question (i.e. how to play an audio file); if you wanted to reply to Niranjan's comment, you should have added a comment yourself, under Lalit's answer – ocramot Mar 30 '15 at 13:10
-
Hmmm......They should have told me that in the comment, I would have changed it......anyway, thanks for letting me know........ – Suv Mar 31 '15 at 13:38
-
I'd rather see: try { mp.setDataSource(context, Uri.parse("android.resource://" + context.getPackageName() +"/res/raw/urmp3name")); } catch (IOException e) { e.printStackTrace(); } – jobbert Jun 07 '18 at 06:44
4
public class MainActivity extends Activity implements OnClickListener {
Button play;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
play=(Button)findViewById(R.id.button1);
play.setOnClickListener(this);
}
@Override
public void onClick(View arg0)
{
mp=MediaPlayer.create(getApplicationContext(),R.raw.song);// the song is a filename which i have pasted inside a folder **raw** created under the **res** folder.//
mp.start();
}
@Override
protected void onDestroy() {
mp.release();
super.onDestroy();
}
}
1
The replay from https://stackoverflow.com/users/726863/lalit-poptani is great one, it worked the first time, but as I used to have the full path of the file, I did it this way
public void audioPlayer(String path){
//set up MediaPlayer
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource(path );
mp.prepare();
mp.start();
} catch (Exception e) {
e.printStackTrace();
}
}
Credit to http://www.helloandroid.com/tutorials/how-play-video-and-audio-android

ilidiocn
- 323
- 2
- 5