2011-08-26 89 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) { 
    } 
} 
相关问题