【问题标题】:android MediaPlayer is playing the wrong mp3 file in assets directoryandroid MediaPlayer 在资产目录中播放错误的 mp3 文件
【发布时间】:2011-11-04 04:53:39
【问题描述】:

我正在尝试从 assets 目录播放一个 mp3 文件,但是当我使用 MediaPlayer 启动它时,播放的是完全不同的东西。代码如下:

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

它似乎播放了一堆位于 assets 目录中的其他文件,而不是播放 mp3File。有什么想法吗?

【问题讨论】:

  • 播放一堆其他文件是什么意思?它只是同时播放每一个吗?一个接一个地?您是否设置了一些调试点来查看 MediaPlayer 的数据源到底设置了什么?
  • mediaplayer.setDataSource("file:///android_asset/

标签: android


【解决方案1】:

这样用是很有用的功能:)

    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) {
    }
}

【讨论】:

    【解决方案2】:
       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

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 2015-08-21
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多