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 以降のデバイスで正常に機能しています