Reputation: 11
String path = Environment.getExternalStorageDirectory().toString()+"/Music/";
File directory = new File(path);
File[] mSongsList = directory.listFiles();
Uri mUri= Uri.fromFile(mSongsList[0]);
Log.v("MainActivity",mUri.toString());
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(this, mUri);
mMediaPlayer.prepare();
mMediaPlayer.start();
I am trying to play the first song in my list but, i am getting an error on setDataSource.
it say "Unhandled Exception: java.io.IOException"
Upvotes: 0
Views: 4074
Reputation: 1
You can play the song from your device by the following codes, but I don't know how to play next songs and previous songs , if you have any idea , pls share me.
fun getURI(){
val path: String =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath()
val directory = File(path)
try {
mSongsList= directory.listFiles()
val mUri = Uri.fromFile((mSongsList as Array<File>?)!![0])
Log.v("MainActivity", mUri.toString())
mp!!.reset()
mp!!.setAudioStreamType(AudioManager.STREAM_MUSIC)
mp!!.setDataSource(this, mUri)
mp!!.prepare()
mp!!.start()
} catch (e: IOException) {
e.printStackTrace()
}
}
Upvotes: 0
Reputation: 229
Place music files(s) under res/raw or any other folder under SD card. We are going to refer the audio file based on the Uri.
Create MediaPlayer object:
MediaPlayer mPlayer = new MediaPlayer();
Locate the audio file:
Uri myUri1 = Uri.parse("file:///sdcard/Songs/ARR Hits/hosannatamil.mp3");
Set the audio stream type of the media player:
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
Set the data source as a content Uri:
try {
mPlayer.setDataSource(getApplicationContext(), myUri1);
} catch (IllegalArgumentException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI
correctly!", Toast.LENGTH_LONG).show();
} catch (SecurityException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI
correctly!", Toast.LENGTH_LONG).show();
} catch (IllegalStateException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI
correctly!", Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
Prepare the player for playback, synchronously:
try {
mPlayer.prepare();
} catch (IllegalStateException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI
correctly!", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI
correctly!", Toast.LENGTH_LONG).show();
}
Start the player:
mPlayer.start();
The above information has been taken from the below link:
"https://programmerguru.com/android-tutorial/android-mediaplayer-example-play-from-uri/"
Upvotes: 2
Reputation: 2761
First of all make sure you have read permissions in your manifest file.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
If you are using the android version Marshmallow or above you need to ask the user for Runtime Permissions
.
This is a good article to request runtime permissions.
For now you can go to the app info page and give the permissions manually. It will start working.
Upvotes: 0
Reputation: 1561
Replace Your Code Like below:
Note: Make Sure That You Have Some Music In MusicDirectory.
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath();
File directory = new File(path);
try{
File[] mSongsList = directory.listFiles();
Uri mUri= Uri.fromFile(mSongsList[0]);
Log.v("MainActivity",mUri.toString());
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(this, mUri);
mMediaPlayer.prepare();
mMediaPlayer.start();
}catch(IOException exception){
e.printStacktrace();
}
Upvotes: 0
Reputation: 544
Keep your code inside the try-catch
block.
try{
// your code
}catch(IOException exception){
}
This is because you are trying to get the music file
. If its not present then it will throw IOException
, so you must handle this.
Upvotes: 0