I have multiple audio files in res/raw
folder. I showing ListView
that contains audio files name. I want to play the corresponding audio file when user select into the ListView
. I have used setDataSource(path)
, but it showing error while playing. How play the audio files directly from that folder? Or Is there any other way?
Asked
Active
Viewed 1.1e+01k times
41

bharath
- 14,283
- 16
- 57
- 95
-
i need a small info, how many audio files you have kept in res folder and what's the total size of those mp3 files. thanks:) – Beginner Oct 28 '13 at 12:59
-
You need to add more information to this question. What file types you are trying to play and what the error/stack trace message is you are receiving. – speedynomads Oct 20 '15 at 09:28
8 Answers
59
add this code in onItemClickListener.
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,long id) {
TextView txtView=(TextView)view.findViewById(R.id.txt_view);
String fname=txtView.getText().toString().toLowerCase();
int resID=getResources().getIdentifier(fname, "raw", getPackageName());
MediaPlayer mediaPlayer=MediaPlayer.create(this,resID);
mediaPlayer.start();
}
});

ilango j
- 5,967
- 2
- 28
- 25
-
3I got the `ResourceNotFound` exception while using like this. I have used `getResources().getIdentifier(audioname, "res/raw", getPackageName());`. – bharath Sep 21 '11 at 13:14
-
don't use res/raw. use like this getResources().getIdentifier(audioname, "raw", getPackageName()); – ilango j Sep 21 '11 at 13:18
-
-
3can you show how you are displaying text in listview. eg. if raw folder contains file like sound.mp3 then you should display the file name as 'sound' only, don't display file extension. – ilango j Sep 21 '11 at 13:26
-
now i edited the answer in this line String fname=txtView.getText().toString().toLowerCase(); – ilango j Sep 21 '11 at 13:28
-
5
-
What is txt_view in R.id.txt_view? I am getting a type error whenever I try this. – Zypps987 Nov 16 '16 at 22:58
34
try this for playing from raw ::
MediaPlayer mPlayer2;
mPlayer2= MediaPlayer.create(this, R.raw.bg_music_wav);
mPlayer2.start();
permission in manifest file ::
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
Update::
public void onItemClick(AdapterView<?> arg0, View view, int position,long id) {
MediaPlayer mPlayer2;
if(position==1)
{
mPlayer2= MediaPlayer.create(this, R.raw.song1);
mPlayer2.start();
}else it() .....
}

Nikunj Patel
- 21,853
- 23
- 89
- 133
-
Yeah. I can play by using `MediaPlayer.create(...)`. This is not a problem. My problem is i want to play particular audio file when select from `ListView`. Because Lot of files available on `res\raw` folder. – bharath Sep 21 '11 at 12:24
-
-
one more thing you need to put code in click listener and apply your own logic – Nikunj Patel Sep 21 '11 at 12:27
-
For example, I have 1.mp3,2.mp3 up to 100.mp3. Now user select 49.mp3 in `ListView`. How to play that particular file? – bharath Sep 21 '11 at 12:29
-
-
-
becase it is easy in your case to hadle 100 file because it is boring – Nikunj Patel Sep 21 '11 at 12:39
-
-
-
4
6
mVideoView = (VideoView) findViewById(R.id.Video_FrontPage);
uri = Uri.parse("android.resource://com.urPackageName/" + R.raw.welcom_video);
mVideoView.setVideoURI(uri);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.start();
-
I am unable to access R.raw.filename. I have made a raw folder in my res folder and have also put my file in it. – Syed_Adeel Jun 13 '13 at 12:43
4
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// selected item
String product = ((TextView) view).getText().toString();
int [] resID= {R.raw.sound1,R.raw.sound2,R.raw.sound3};
MediaPlayer mediaPlayer=MediaPlayer.create(this,resID[position]);
mediaPlayer.start();
// sending data to new activity
}
});
}

Asthme
- 5,163
- 6
- 47
- 65
2
var mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1)
mediaPlayer.start() // no need to call prepare(); create() does that for you

Majid Sadeghi
- 180
- 11
1
Place your audio file in the res/raw folder and call it from the create method of MediaPlayer.
MediaPlayer.create(this, R.raw.audio_file_name).start();
Eg:
MediaPlayer.create(this, R.raw.sample).start();

Codemaker2015
- 12,190
- 6
- 97
- 81
0
To play audio from the raw folder call this method. In my case my file name was notificaion.mp3:
AudioPlayer().playAudio(mContext, "notificaion")
Here is the AudioPlayer class:
class AudioPlayer {
private var mMediaPlayer: MediaPlayer = MediaPlayer()
private fun stopAudio() {
try {
mMediaPlayer.release()
}catch (ex: Exception){
ex.printStackTrace()
}
}
fun playAudio(mContext: Context, fileName: String) {
try {
stopAudio()
mMediaPlayer = MediaPlayer.create(mContext, mContext.resources.getIdentifier(fileName, "raw", mContext.packageName))
mMediaPlayer.setOnCompletionListener { stopAudio() }
mMediaPlayer.start()
}catch (ex: Exception){
ex.printStackTrace()
}
}
}

Md Imran Choudhury
- 9,343
- 4
- 62
- 60
0
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,long id) {
TextView txtView=(TextView)view.findViewById(R.id.txt_view);
String fname=txtView.getText().toString().toLowerCase();
int resID=getResources().getIdentifier(fname, "raw", getPackageName());
MediaPlayer mediaPlayer=MediaPlayer.create(this,resID);
mediaPlayer.start();
}
});
add this code in onItemClickListener and one more information is you can't play any file other than mp3 and the mp3 file must be the original extension as file.

John
- 11
- 1
- 6