2012-02-15 29 views
1

私はVideoViewを使用してrtspストリーミングビデオを表示しています。下にコードのスニペットがあります。アクティビティの再開と再開時のVideoViewの停止表示

OnCreate() { 
    ... 
    // Setup video view 
    videoView = (VideoView) findViewById(R.id.videoViewStream); 
    videoView.setMediaController(new MediaController(this)); 
    .... 
    // Create a button 
} 

OnButtonClickListener() { 
    videoView.setVideoURI(Uri.parse(videoUri)); 
videoView.requestFocus(); 
} 

OnResume関数とOnPause関数のVideoViewに関するコードはありません。

問題のためのユースケースは、次のとおりです。

  1. オープンアプリケーションと私はAndroidのデスクトップ
  2. 使用再オープンする他のアプリケーション
  3. に取得するためのアプリケーションを最小限
  4. ビデオを開始またはビデオアプリケーションを再トリガーする
  5. ビデオは表示されず、実行されていません。私はVideoViewでreclickする必要があります

問題は、どのようにビデオを再表示することが可能ですか?ビデオをstart()、stop()、またはpause()する必要がありますか?

助けを歓迎します。

TA

答えて

2

私は、現在のビデオpostitionを保存することをお勧めいたします(そして、あなたが再起動した場合に必要なすべて)とonPauseで再生を停止します。 onDestroyでは、mediaPlayerを解放する必要があります。ユーザーが返品した場合、あなたはonResumeまたはonCreateを取得します。 onCreateでは初めてのようにプレーヤーを再初期化します。 onResumeでは、プレイヤーが本当に黙っていて、すべてがOKであれば、再生を開始する(またはクリックイベントを待つ)場合に安全確認を作成します。可能なシークのために最後に保存された位置も確認してください。

私はOnButtonClickListenerから別のメソッドにコードを抽出し、そのメソッドをclickListenerまたはonResumeから呼び出すと、自動再生を開始します。

更新答え:

私はリリースでミスを犯しました。これはVideoViewによってstopPlaybackメソッドで行われます(grepcodeのVideoViewソースコードを参照)。 RTSPストリーミングサーバーの仕組みがわかりませんが、私が使用しているストリーミングサーバーは、VideoViewのseekToメソッドでのシークをサポートしていません。 とstartonResumepauseと電話することができますが、これは0(私の場合)からストリームを開始します。だから私はカスタムシークバーを作成しなければならなかった。しかしそれは別の話です。

私の実装ではとstopPlaybackonDestroyに、pauseを呼び出しています。 には最後の位置も保存します。 onCreateでは、私はメディアコントロールを表示して設定するだけです。 onResume私は最後の位置についての情報があるかどうかチェックします。これが存在する場合、私はそのパラメータ(シーク)を持つプレイヤー(setVideoPathrequestFocusstart)を用意します。そうでなければ(シーク= 0)はありません。

これは私の解決策です:)

+0

私はあなたのアドバイスを取ってそれをプログラムしようとします。私はVideoViewクラスの代わりにMediaPlayerを使うべきだと思いますか? MediaPlayerのサンプルコードはありますか?私はあなたがメディアクリップをリリースしなければならないonDestroyと言うか、それともヌルにするという意味ですか? – jlanza

+0

私の回答を更新します;) – zoki

+0

ギャラリームービープレーヤのコードは、現在のビデオの位置を保存して再開する方法の良い例です: http://grepcode.com/file/repository.grepcode.com /java/ext/com.google.android/android-apps/4.0.3_r1/com/android/gallery3d/app/MoviePlayer.java?av=f – inky

関連する問題