アプリケーションの 1 つのアクティビティで開始し、再準備することなくアプリケーションの他のアクティビティにユーザーを追跡するビデオ ストリームを表示しようとしています。アクティビティの変更を少し一時停止しても問題ありませんが、再開するべきではありません。すべてが 1 つのアクティビティで正常に機能していますが、アクティビティを切り替えるMediaPlayer
と、 は新しい に接続したくないようですSurfaceHolder
。オーディオは美しく機能しますが、ほとんど問題はありません。
SurfaceView
アプリケーションコンテキストで初期化されたサブクラスを介してこれを実行しようとしました。(アクティビティ間でのアプリケーション コンテキスト ビューの再配置は、代わりに などの単純なビューを使用するとうまくいくように見えるButton
ので、それは問題ではないと思います。) コンストラクターで、MediaPlayer オブジェクトを作成し、リスナーとデータソース (MP4 ストリーム) を設定します。 HTTP 経由 - はい、MediaPlayer の通常の使用方法で再生できることを確認しました)、および を呼び出しますprepareAsync
。私SurfaceHolder.Callback
のsurfaceCreated
メソッドではsetDisplay
、 and (プレイヤーが準備を終えた場合)を呼び出しますstart
。私がsurfaceDestroyed
呼び出すメソッドでpause
。そして、サーフェスが既に作成されている場合は、準備コールバックで start を呼び出します。
私はこの時点で何をすべきか途方に暮れています。何か案は?