使用Android MediaPlayer播放音频

Fer*_*nte 6 audio mp3 android shoutcast media-player

我正在尝试用Android的MediaPlayer创建一个音频流.如果它不能与Android 2.1或下面的版本一起工作,那就没关系了.我需要能够播放SHOUTcast流中的音频.这是我的代码:

player = new MediaPlayer();
try {
player.setDataSource("http://87.230.103.107:8000");
player.prepareAsync();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
    e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
player.start();
Run Code Online (Sandbox Code Playgroud)

出于某种原因,此代码将不会播放任何内容.我认为它可能与应用程序权限有关.有谁知道发生了什么?

谢谢!

[更新]我收到以下错误:

04-25 23:35:15.432: ERROR/MediaPlayer(283): start called in state 4
04-25 23:35:15.432: ERROR/MediaPlayer(283): error (-38, 0)
04-25 23:35:15.602: ERROR/MediaPlayer(283): Error (-38,0)
04-25 23:35:17.542: INFO/AwesomePlayer(33): calling prefetcher->prepare()
04-25 23:35:18.547: INFO/Prefetcher(33): [0x17650] cache below low water mark, filling cache.
04-25 23:35:18.762: INFO/AwesomePlayer(33): prefetcher is done preparing
04-25 23:35:19.769: ERROR/AwesomePlayer(33): Not sending buffering status because duration is unknown.
Run Code Online (Sandbox Code Playgroud)

Geo*_*its 5

对于迟到的回复感到抱歉,在寻找另一个问题的答案时遇到了这个问题.

如果你仍然需要一个答案,那么你start()正在准备它时正在打电话.PrepareAsync()不像马上回来的那样prepare().在流中使用'prepare()`的问题是它会阻塞,直到它有足够的数据来开始播放.

你想要做的是设置一个OnPreparedListener,然后start()从那里进行调用.