サーフェスビューでレンダリングされたメディアプレーヤーを使用してビデオを表示するアクティビティ (アクティビティ A など) があります。
ユース ケースは、ビデオを一時停止し、別のアクティビティ (アクティビティ B など) を開始してから、アクティビティ A に戻ることです。
アクティビティ A は停止されますが、B に移動しても破棄されません。これは良いことです。
サーフェス ビュー (表示されないため) は破棄されます (通知コールバックから観察されるように)。
アクティビティ A に戻り、start() を使用してメディア プレーヤーを再起動すると、メディア プレーヤーはオーディオを再生しますが、ビデオは表示されません。次のようなエラーが Logcat に出力されます。
11-16 18:14:44.532: ERROR/Overlay(8630): Error = Invalid argument from qbuf
SurfaceHolder
残念ながら、 as provided byの新しいインスタンスを使用しsurfaceCreated()
ても役に立ちません (つまり、同じエラーが発生します)。
さまざまな投稿を読んだことがありますが、解決策は をリセットして完全に再起動することですが、エンド ユーザーはストリーム内でmediaplayer
プレーヤーの準備が完了するまで待たなければならないため、効率的ではありません。cycle + seekTo last positio
オーディオが再生されるという事実で示されているように、ビデオ デコーダーと新しいsurfaceholder/view
.
アクティビティを再開するときにビデオの再生を再開するための最善の解決策 (最善 = 最速) は何ですか?