HLS動画を再生するAndroidアプリを書きたいです。これにはデフォルトのVideoViewコントロールを使用します。
VideoView player = (VideoView) findViewById(R.id.player);
String httpLiveUrl = "http://example.com/playlist.m3u8";
player.setVideoURI(Uri.parse(httpLiveUrl));
player.setMediaController(new MediaController(this));
player.requestFocus();
player.start();
デバイスの向きを変更する(回転させる)まで、すべて正常に機能します。この場合、AndroidはVideoViewインスタンスとダウンロードされたHLSフラグメントを使用して現在のアクティビティを破棄します。新しいアクティビティインスタンスは最初から作成されます。したがって、VideoView(MediaPlayer)は接続を確立し、HLSフラグメントを再度ダウンロードする必要があります(これには多くの時間がかかります)。さらに、ビデオは現在の位置からではなく、最初から開始されます。
onSaveInstancestate / onRestoreInstanceStateのようなアクティビティの状態を保存/復元するのに役立つアクティビティのメソッドについては知っていますが、VideoViewをシリアル化して方向を変更する方法がわかりません。
MediaPlayer用のAndroidサービスについても考えました...しかし、ビデオプレーヤーの場合、それは悪い方法で間違っていると思います。
それで、誰かが何か考えを持っていますか?:)