とにかく、構成の変更を手動で処理せずに、オリエンテーション後にアプリケーションがバッファーを保持できるようにすることはできますか?
シナリオは基本的に:
向きが変わったときに、最新の時点までのビデオ バッファを保持する必要があります。
新しいレイアウトをリロードする必要があります (portait と lanscape のレイアウトが異なるため)。したがって、アプリにアクティビティを再起動させて新しいリソースをリロードさせるのが最善の方法だと思います。
ビデオ コンポーネントはフラグメントにあります。
私が試したが受け入れられない代替案:
最初の回避策は、ビデオの位置を保存し、ビューが作成された後、seekTo を使用して最後のポイントに移動することです。ただし、これにより、デバイスが再度バッファリングされます。
フラグメント setRetainInstance(true) をいじってみましたが、向きが変わった後にメディア プレーヤーが再初期化されないようにしました。各 onCreateView の後、mediaplayer.setDisplay() を新しいサーフェスホルダーに設定するだけです。残念ながら、これによりメディア プレーヤーがエラー状態になり、メディア プレーヤーをリセットする必要があります。
これに対する提案/回避策はありますか?
編集: Android 4.0以降でメディアプレーヤーがアクティブなときにメディアプレーヤーのサーフェスホルダーを変更できることをstackoverflowのどこかで見ました。ただし、Android 3.x 用のアプリを開発しています。