使用媒体播放器播放音乐文件时出现了一个奇怪的问题。
播放开始没有任何问题,一切正常。该应用程序不会崩溃。但每次我选择一首歌时,我都会收到以下LogCatError:
11-18 16:26:19.800:E / MediaPlayer(11367):setDataSource JAVA路径
11-18 16:26:19.800:E / MediaPlayer-JNI(11367):setDataSource:outside JNI中的路径是?x @
11-18 16:26:19.855:E / MediaPlayer(11367):在prepareAsync中
11-18 16:26:20.005:W / MediaPlayer(11367):info / warning(1,44)
我不从互联网上下载文件,我只是播放存储在设备上的歌曲。
如果没有人能给我一个解决方案,如果有人能够向我解释这个错误那就太好了。
答案 0 :(得分:1)
使用try catch about mediaplayer datasource,如下所示:
try {
mp.setDataSource(getApplicationContext(), ringtoneUri);
} catch (IllegalArgumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalStateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
你必须抓住所有例外情况。 这对我有用。
答案 1 :(得分:0)
尝试使用ES文件资源管理器或类似的东西来检查您要播放的文件的属性/权限,并尝试使其成为世界可读的
答案 2 :(得分:0)
我有同样的问题,文件是“* .wmv”格式,然后我将文件转换为mp3并尝试相同的代码,它工作,请找到下面的代码
try {
MediaPlayer player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setDataSource("http://Server.com/XXXX.mp3");
player.prepare();
player.start();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}