1

私はアンドロイド開発にまったく慣れていません。現在、いくつかのビデオを含む非常に単純なアプリケーションを開発しています。私の問題を実証するために、res/raw/ ディレクトリに 2 つのビデオ (例: video1.mp4 と video2.mp4) があります。最初のビデオが終了したらすぐに 2 番目のビデオの再生を開始したい。これが私がビデオを呼び出す方法です:

public void showVideo1() {
    VideoView vd = (VideoView)findViewById(R.id.videoview);
    vd.setVideoPath("android.resource://com.myapp.hello/" + R.raw.video1);
    vd.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
    {           
        public void onCompletion(MediaPlayer mp) 
        {
            Log.d("VideoComplete", "Video 1 is complete");
            showVideo2(); // start playing the second video...
        }           
    }); 
    vd.start();
}


public void showVideo2() {
    VideoView vd = (VideoView)findViewById(R.id.videoview);
    vd.setVideoPath("android.resource://com.myapp.hello/" + R.raw.video2);
    vd.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
    {           
        public void onCompletion(MediaPlayer mp) 
        {
            Log.d("VideoComplete", "Video 2 is complete");
        }           
    }); 
    vd.start();
}

この例は、ほとんどのデバイスで機能します。showVideo2 を呼び出す showVideo1() を呼び出すと、両方のビデオが再生され、それだけです。しかし、一部のデバイスでは 2 番目のビデオが再生されないことがわかりました (???)。たとえば、私の古い Samsung Galaxy 5 i5500 では、最初のビデオが終了した後、空白の画面が表示されます。この電話は Android v2.2 を使用しており、同じ OS バージョン (Galaxy Tab GT-P1000) を使用する別のデバイスでも試してみましたが、両方のビデオがそこで再生されます。

ビデオの再コーディングを試みましたが (コーデック エラーだと思いました)、それでもうまくいきません。また、setZOrderOnTop(true)、seekTo(0) などで遊んでみましたが、気が狂いそうです。

なにか提案を?私の将来のアプリは、すべてのデバイスでこの機能 (次から次へとビデオを再生できる) に依存しているので、これには本当に必死です。

4

1 に答える 1

0

Video1のonCompleteListenerにハンドラーを作成し、しばらくしてからビデオが再生されているかどうかを確認できます。さらに、Video2を停止してランナブルで再度再生し、他のデバイスがロジックをサポートすることが絶対に不可能かどうかを知るために、さまざまなことを試すことができます。LogCatから発生するイベントを追跡します。幸運を

于 2012-08-27T10:50:45.787 に答える