MediaPlayer更改dataSource播放器时我的Android有问题.根据MediaPlayer(http://developer.android.com/reference/android/media/MediaPlayer.html)的规范,我reset在改变时需要玩家dataSource.这样可以正常工作,但只要channelChanged快速连续两次调用该方法,就会MediaPlayer.reset冻结UI.我分析了这里看到的代码:
public void channelChanged(String streamingUrl)
{
long m1 = System.currentTimeMillis();
mMediaPlayer.reset();
long m2 = System.currentTimeMillis();
try
{
mMediaPlayer.setDataSource(streamingUrl);
}
catch (IOException e)
{
e.printStackTrace();
}
long m3 = System.currentTimeMillis();
mMediaPlayer.prepareAsync();
long m4 = System.currentTimeMillis();
Log.d("MEDIAPLAYER", "reset: " + (m2 - m1));
Log.d("MEDIAPLAYER", "setDataSource: " + (m3 - m2));
Log.d("MEDIAPLAYER", "preparing: " + (m4 - m3));
}
Run Code Online (Sandbox Code Playgroud)
重置:3
setDataSource:1
准备:0
重置:3119
setDataSource:2
准备:1
显然,第一次呼叫reset被阻止 …