android MediaPlayer在资产目录中播放错误的mp3文件
问题描述:
我试图从资产目录播放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,似乎发挥了一堆驻留在资产目录中的其他文件。有任何想法吗?
答
MediaPlayer mp = new MediaPlayer();
AssetFileDescriptor descriptor;
descriptor = getAssets().openFd("filename.mp3");
mp.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
mp.prepare();
mp.start();
把你的mp3放在assets文件夹中。 你可以参考这个链接也play-audio-file-from-the-assets-directory
这也android-problem-playing-sounds-from-assets-folder
答
使用这种方式是非常有用的功能:)
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) {
}
}
你是什么意思起到了一堆其他文件?它是否同时播放每一个?一个接一个地?您是否设置了一些调试点来准确查看MediaPlayer的数据源是如何设置的? – Jack
mediaplayer.setDataSource(“file:/// android_asset/ – Android
可能出现[从资产目录播放音频文件]的副本(http://stackoverflow.com/questions/3289038/play-audio-file-from-the-assets -目录) –