3

アプリケーションの 1 つのアクティビティで開始し、再準備することなくアプリケーションの他のアクティビティにユーザーを追跡するビデオ ストリームを表示しようとしています。アクティビティの変更を少し一時停止しても問題ありませんが、再開するべきではありません。すべてが 1 つのアクティビティで正常に機能していますが、アクティビティを切り替えるMediaPlayerと、 は新しい に接続したくないようですSurfaceHolder。オーディオは美しく機能しますが、ほとんど問題はありません。

SurfaceViewアプリケーションコンテキストで初期化されたサブクラスを介してこれを実行しようとしました。(アクティビティ間でのアプリケーション コンテキスト ビューの再配置は、代わりに などの単純なビューを使用するとうまくいくように見えるButtonので、それは問題ではないと思います。) コンストラクターで、MediaPlayer オブジェクトを作成し、リスナーとデータソース (MP4 ストリーム) を設定します。 HTTP 経由 - はい、MediaPlayer の通常の使用方法で再生できることを確認しました)、および を呼び出しますprepareAsync。私SurfaceHolder.CallbacksurfaceCreatedメソッドではsetDisplay、 and (プレイヤーが準備を終えた場合)を呼び出しますstart。私がsurfaceDestroyed呼び出すメソッドでpause。そして、サーフェスが既に作成されている場合は、準備コールバックで start を呼び出します。

私はこの時点で何をすべきか途方に暮れています。何か案は?

4

1 に答える 1

0

より簡単な方法は、onpause()メソッドに位置を格納することです。

public void onPause(){

     super.onPause();
     int pos = player.getCurrentPosition();
}

次に、新しいアクティビティの呼び出しで:

player.seekTo(pos);

player.start();

しかし、それはあまり効率的ではありません。アクティビティを終了するときにビデオのステータスを保存し、アクティビティに戻るときに復元するのは良いことですが、このようなものをオンラインで見つけることができません。

于 2011-07-25T14:36:28.430 に答える