我面临的问题是,每当我的应用在 Android 4.0+ 上播放流时,甚至在加载流之前都会调用OnPrepare
from 方法MediaPlayer.OnPreparedListener
,因此我无法向用户指示流下载/缓冲正在进行中。我已经找到了一个类似的问题,但没有回答
这是我正在做的事情。
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
playVideo(someRtspUrl);
}
private void playVideo(String url) {
// if app is running on Google TV then change RTSP link to HLS
if (url.contains("rtsp")) {
// split the RTSP URL and make it as HLS
String videoUrlParts[] = url.split("\\?");
url = videoUrlParts[0].replace("rtsp", "http") + "/playlist.m3u8";
if (videoUrlParts.length > 1)
url += "?" + videoUrlParts[1];
} mVideoView.setVideoURI(Uri.parse(url));
mVideoView.requestFocus();
mVideoView.setOnCompletionListener(this);
mVideoView.setOnPreparedListener(this);
}
@Override
public void onPrepared(MediaPlayer player) {
dismissProgressDialog();
mVideoView.start();
}
此代码在 Google TV 和其他 Android 3.0+ 和 < 4.0+ 设备上运行良好