MediaPlayer:音频从一开始就不会流式传输

时间:2016-10-01 08:03:28

标签: android android-mediaplayer audio-streaming

我在android中使用MediaPlayer来流式传输通过ListView添加的一些音频文件。从ListView

单击项目时播放音频

流很长(35分钟+),如果用户在流结束之前退出应用程序。然后,当在启动后从ListView再次选择项目时,将从停止的同一位置恢复该流,而我希望每当从{{{{{{{{{ 1}}。

以下是代码:

ListView

我尝试在@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { musicService.player.reset(); musicService.player.release(); musicService.player = new MediaPlayer(); try { musicService.player.setDataSource(skURL[position]); } catch (IOException e) { e.printStackTrace(); } musicService.player.setAudioStreamType(AudioManager.STREAM_MUSIC); musicService.player.prepareAsync(); musicService.player.setOnPreparedListener(this); } @Override public void onPrepared(MediaPlayer mp) { musicService.playSK(); } //In the MusicService.java public void playSK(){ player.start(); } 方法中将搜索位置设置为0,认为它可以解决问题,如

playSK()

它部分地做了。当选择public void playSK(){ player.seekTo(0); player.start(); } 的第一项时,流始终从头开始,但单击任何其他项会出现以下错误:

ListView

更新:

所以我决定深入研究为什么在尝试寻找赛道的开头时会出现问题,我发现由于协议异常,媒体播放器无法获得持续时间。

MediaPlayer : error (-2147483648, 0)
MediaPlayer : start called in state 0
MediaPlayer : error (-38, 0)
MediaPlayer : Error (-2147483648, 0)
MediaPlayer : Error (-38, 0)

如何处理此异常并解决问题?

1 个答案:

答案 0 :(得分:0)

尝试在musicService.player.release();

之后将媒体播放器对象设为null
musicService.player = null;

我也面临这个问题,对我有用的唯一解决方法是将其设为null。如果您仍然遇到任何问题,请告诉我