0

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サービスについても考えました...しかし、ビデオプレーヤーの場合、それは悪い方法で間違っていると思います。

それで、誰かが何か考えを持っていますか?:)

4

2 に答える 2

1

あなたはできる :

1:マニフェストファイルで指定して向きを修正します。

 <activity
    android:screenOrientation="landscape">
...
</activity>

2:向きを変更した後もアプリを実行し続けるようにAndroidに指示できます。この場合、アクティビティは破棄および再作成されません。

 <activity
    android:configChanges="orientation">
...
</activity>
于 2012-12-12T01:34:09.153 に答える
0

これをマニフェストファイルのアクティビティタグに追加します。

android:configChanges="orientation|keyboardHidden"

例:

 <activity android:name=".MainActivity"
    android:configChanges="orientation|keyboardHidden"
    android:label="@string/title_activity" />

これは私にとってはうまくいきましたが、MediaPlayerクラスを使用しました。

于 2012-12-12T01:57:28.093 に答える