0

Android アプリケーションがあり、ビデオファイル、特に 1 つの Web メディア リソースからの異なるシリーズのエピソードを再生できます。

ビデオファイルは次の方法で再生されています:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(mp4url), "video/mp4");
startActivity(intent);

-はmp4url文字列変数です

ここで、プログラムがビデオファイルのキューを再生できるようにします。

私は次の方法を作ってみました:

for(int iteration=arg2;iteration<episodes.size(); iteration++){
    Intent intent1 = new Intent(Intent.ACTION_VIEW);
    intent1.setDataAndType(Uri.parse(mp4Url1), "video/mp4");
    startActivity(intent1);
}

ここでarg2、選択されたビデオファイルの位置を示し、選択されたepisodesビデオファイルの後に再生されるビデオファイルのキューの ArrayList 変数です。

しかし、うまくいきませんでした。実際にはすべてのビデオファイルが
同時に再生可能です。順番にプレイする必要があります。コードを効果的に再編成するにはどうすればよいですか?

ご清聴ありがとうございました。

4

1 に答える 1

0

映画の URL の配列リストを作成します (例)定数を次のようにyourURLList定義します。intstatic final int VIDEO_PLAYBACK_FINISHED = 32

次のように、どのビデオが再生されているかを追跡するためにカウントを維持できます。

static int VIDEO_RUNNING = 0

呼び出し元アクティビティ内に次のようなメソッドを作成します。

private void startMovie(int serialOfMovie){
        String vdoURL= yourURLList.get(serialOfMovie);//array list of movie urls
        if(vdoURL != null)
        {
            //video url for that index is found,if not then it would not enter here
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.parse(vdoURL), "video/mp4");
            startActivityForResult(intent,
                     VIDEO_PLAYBACK_FINISHED);
        }

}

そして、呼び出し側アクティビティ (作成しているインテントを呼び出すアクティビティ) 内に、次のスニペットを追加することを忘れないでください。

protected void onActivityResult(int requestCode, int resultCode,
             Intent data) {
         if (requestCode == VIDEO_PLAYBACK_FINISHED) {

             if (resultCode == RESULT_OK) {
                 //one video is finished
                 VIDEO_RUNNING++; //increase which vdo is running count
                 startMovie(VIDEO_RUNNING);
             }
         }
     }

この一連の映画を(最初から)再生しようとしているときは、次のように呼び出します。startMovie(VIDEO_RUNNING);//VIDEO_RUNNING is 0 initially,so it will point the first url in url list.

アクティビティでムービーを再生するためにMediaPlayerを使用している場合(ムービーの URL を含むインテントを使用して呼び出すもの) を覚えておいてください。ムービーの再生が終了したらfinish、そのアクティビティを実行する必要があります。そのアクティビティで呼び出されたMediaPlayerインスタンスがある場合のように、これを行う必要があります。mPlayer

mPlayer.setOnCompletionListener(new
    OnCompletionListener() {        
        @Override
        public void onCompletion(MediaPlayer arg0) {
        finish();              
    }
});

このようにして、映画が次々と再生されるキュー効果が得られます。

于 2013-07-28T09:50:02.307 に答える