2011-08-26 101 views
0

我試圖從資產目錄播放mp3文件,但是當我用MediaPlayer啓動它時,播放的東西完全不同。下面的代碼:android MediaPlayer在資產目錄中播放錯誤的mp3文件

String mp3File = "dir/a/music.mp3"; //the path here is file:///android_asset/dir/a/music.mp3; 
AssetManager assetMan = getAssets(); 
MediaPlayer media = new MediaPlayer(); 
FileInputStream mp3Stream = assetMan.openFd(mp3File).createInputStream(); 
media.setDataSource(mp3Stream.getFD()); 
media.prepare(); 
media.start(); 

而不是打mp3File,似乎發揮了一堆駐留在資產目錄中的其他文件。有任何想法嗎?

+0

你是什麼意思起到了一堆其他文件?它是否同時播放每一個?一個接一個地?您是否設置了一些調試點來準確查看MediaPlayer的數據源是如何設置的? – Jack

+0

mediaplayer.setDataSource(「file:/// android_asset/ – Android

+0

可能出現[從資產目錄播放音頻文件]的副本(http://stackoverflow.com/questions/3289038/play-audio-file-from-the-assets -目錄) –

回答

3

使用這種方式是非常有用的功能:)

public void playBeep() { 
    try { 

     if (m.isPlaying()) { 
      m.stop(); 
      m.release(); 
      m = new MediaPlayer(); 
     } 
     AssetFileDescriptor descriptor = getAssets().openFd("mp3 name.mp3"); 
     m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength()); 
     descriptor.close(); 

     m.prepare(); 
     m.setVolume(1f, 1f); 
     m.setLooping(true); 
     m.start(); 
    } catch (Exception e) { 
    } 
} 
相關問題