私はアンドロイド開発にまったく慣れていません。現在、いくつかのビデオを含む非常に単純なアプリケーションを開発しています。私の問題を実証するために、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) などで遊んでみましたが、気が狂いそうです。
なにか提案を?私の将来のアプリは、すべてのデバイスでこの機能 (次から次へとビデオを再生できる) に依存しているので、これには本当に必死です。