使用mediaplayer播放音乐时,LogCatError“setDataSource:JNI中的外部路径是?x @”

时间:2011-11-18 16:42:59

标签: android

使用媒体播放器播放音乐文件时出现了一个奇怪的问题。

播放开始没有任何问题,一切正常。该应用程序不会崩溃。但每次我选择一首歌时,我都会收到以下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)

我不从互联网上下载文件,我只是播放存储在设备上的歌曲。

如果没有人能给我一个解决方案,如果有人能够向我解释这个错误那就太好了。

3 个答案:

答案 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();
        }