MediaPlayer.setDataSource()和prepare()无法正常工作 - android

Kyl*_*yle 15 android media-player prepare

我在使用MediaPlayer对象时遇到了麻烦,并没有取得多大成功.如果我将一个声音资源添加到我的原始文件夹并使用R中的int值调用它,它可以正常工作.但是我希望能够从网址中删除内容.

根据我读过的所有文档,setDataSource()应该接受带有文件url的字符串参数.

我在prepare()语句中不断收到IO异常.我甚至试过在本地复制文件,但仍然没有骰子.

有人有主意吗?

MediaPlayer mp = new MediaPlayer();
try {
        mp.setDataSource("http://www.urltofile.com/file.mp3");
        mp.prepare();
        mp.start();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

Kon*_*rov 21

尝试使用MediaPlayer.create(),您也可能只想在玩家实际准备好后启动,例如:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MediaPlayer player = MediaPlayer.create(this, Uri.parse("http://www.urltofile.com/file.mp3"));
    player.setOnPreparedListener(new OnPreparedListener() { 
        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.start();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 适用于外部URL(例如"http://google.com/"),但在尝试本地资源时会抛出异常(例如,"file://android_asset/sound.mp3"):( (3认同)

Iho*_*DIM 13

对于流,您应该调用prepareAsync(),它会立即返回,而不是阻塞,直到缓冲了足够的数据.