【发布时间】:2012-10-14 13:46:33
【问题描述】:
给出以下源代码sn-p:
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;
}
});
}
});
我正在使用 Android 3.x+ 设备流式传输 HLS 流,并在缓冲完成后尝试隐藏加载对话框。 视频流有效,但永远不会触发信息事件。
有什么想法吗?
【问题讨论】:
-
谁能为此提供一个好的解决方案?
-
我只是想知道在
onPrepared(...)中设置OnInfoListener在调用链中是否为时已晚。prepareAsync()上的文档说明如下:"(...) 对于流,您应该调用 prepareAsync(),它会立即返回,而不是阻塞直到缓冲足够的数据。 " 这听起来好像onPrepared(...)在缓冲区被填满之前不会被击中。您已经尝试过反射的任何更改吗?这应该允许您随时设置OnInfoListener。
标签: android video-streaming android-mediaplayer