以下是给出的源代码片段:
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END){
activity.dismissDialog(DialogID.DIALOG_LOADING);
return true;
}
return false;
}
});
}
});
我正在使用安卓3.x+设备流式传输HLS流,并尝试在缓冲完成后隐藏加载对话框。视频流传输可以正常工作,但信息事件从未被触发。有什么想法吗?
onPrepared(...)
中设置OnInfoListener
已经太晚了。prepareAsync()
的文档如下所示:“(...)对于流,您应该调用prepareAsync(),它会立即返回,而不是阻塞直到足够的数据被缓冲。”这听起来好像onPrepared(...)
将不会被触发,直到缓冲区已经填满。你有没有尝试过反射?这样可以让你随时设置OnInfoListener
。 - MH.