2011-11-18 48 views
1

使用mediaplayer播放音樂文件時出現了一個奇怪的問題。當使用mediaplayer播放音樂時,LogCatError「setDataSource:JNI中的外部路徑是?x @」

回放開始沒有任何問題,一切正常。該應用程序不會崩潰。但每次我選擇一首歌曲,我得到以下LogCatError:

11-18 16:26:19.800: E/MediaPlayer(11367): setDataSource JAVA path

11-18 16:26:19.800: E/MediaPlayer-JNI(11367): setDataSource: outside path in JNI is [email protected]

11-18 16:26:19.855: E/MediaPlayer(11367): In prepareAsync

11-18 16:26:20.005: W/MediaPlayer(11367): info/warning (1, 44)

我不從網上下載文件,我只是播放存儲在設備上的歌曲。

如果沒有人能給我一個解決方案,如果有人能向我解釋錯誤,那將是很好的。

+0

同樣的錯誤在這裏,但播放直播http流。 –

回答

1

使用嘗試捕捉你身邊的媒體播放器的數據源,如:

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

你必須捕獲所有異常。 這對我有用。

0

嘗試使用ES文件瀏覽器或類似的東西來檢查屬性/你要玩,並嘗試將文件的權限,使其成爲世界可讀

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(); 
     } 
相關問題