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();
我正在尝试播放列表中的第一首歌,但是, 我在setDataSource上收到错误。
它说" 未处理的异常:java.io.IOException "
答案 0 :(得分:2)
将音乐文件放置在res / raw或SD卡下的任何其他文件夹下。我们将参考基于Uri的音频文件。
创建MediaPlayer对象:
MediaPlayer mPlayer = new MediaPlayer();
找到音频文件:
Uri myUri1 = Uri.parse("file:///sdcard/Songs/ARR Hits/hosannatamil.mp3");
设置媒体播放器的音频流类型:
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
将数据源设置为内容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();
}
准备播放器同步播放:
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();
}
启动播放器:
mPlayer.start();
以上信息取自以下链接:
“ https://programmerguru.com/android-tutorial/android-mediaplayer-example-play-from-uri/”
答案 1 :(得分:0)
将您的代码保留在try-catch
区块内。
try{
// your code
}catch(IOException exception){
}
这是因为您正试图获取music file
。如果它不存在那么它将抛出IOException
,所以你必须处理它。
答案 2 :(得分:0)
替换您的代码如下:
注意:确保您在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();
}
答案 3 :(得分:0)
首先确保您在清单文件中具有读取权限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
如果您使用的是Android版Marshmallow或以上,则需要向用户询问Runtime Permissions
。
This是一篇很好的文章来请求运行时权限。
现在,您可以转到应用信息页面并手动授予权限。它将开始工作。
答案 4 :(得分:0)
您可以按照以下代码从设备中播放歌曲,但是我不知道如何播放下一首和上一首歌曲,如果您有任何想法,请与我分享。
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()
}
}