我正在尝试使用互联网广播流,但在某些流中,除了这个之外,我什么也得不到:
05-14 13:16:13.480: E/MediaPlayer(2088): error (1, -2147483648)
05-14 13:16:13.480: W/System.err(2088): java.io.IOException: Prepare failed.: status=0x1
05-14 13:16:13.480: W/System.err(2088): at android.media.MediaPlayer.prepare(Native Method)
05-14 13:16:13.480: W/System.err(2088): at com.darko.mk.RadioTresActivity$2.run(RadioTresActivity.java:141)
05-14 13:16:13.480: W/System.err(2088): at java.lang.Thread.run(Thread.java:1019)
有些电台工作正常,但有些电台根本无法播放。
这是我给出错误的代码:
public void playRadio(final String source) {
new Thread(new Runnable() {
public void run() {
try {
mediaPlayer.release();
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(source);
mediaPlayer.prepare(); //line 141 that gives the error
mediaPlayer.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
可能是什么问题?下面是示例:http://217.16.69.17:8000/metropolis.mp3
安卓文档
"对于流,你应该调用prepareAsync(),它会立即返回,而不是阻塞,直到缓冲了足够的数据。
iplayer.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
iplayer.prepareAsync();
要使用 Android 媒体播放器流式传输音频,您应该在收到 onPreparedListner 回调后开始播放音频。因为将数据加载到媒体播放器中需要时间。如果您开始播放媒体播放器而不收听PreparedListner媒体播放器将异常。