アプリケーションに問題があり、次のようにseekTo()関数を使用したいVideoView:
videoView.seekTo(time);
videoView.start();
では問題なく動作しますが、以降のバージョンandroid 2.2では動作しませんandroid 2.3... 誰かが理由を教えてくれますか? それは何日も私を悩ませます。
アプリケーションに問題があり、次のようにseekTo()関数を使用したいVideoView:
videoView.seekTo(time);
videoView.start();
では問題なく動作しますが、以降のバージョンandroid 2.2では動作しませんandroid 2.3... 誰かが理由を教えてくれますか? それは何日も私を悩ませます。
への呼び出しVideoView.start()は、シークが完了した後にのみ行う必要があります。への呼び出しはシークをVideoView.seekTo()開始しますが、残念ながらシークが実際に完了したことを通知する必要VideoViewはありません。OnSeekCompleteListener
7990784 に対する私の回答に示されているように、VideoViewサポートするようにカスタマイズできます。OnSeekCompleteListener
onSeekComplete()その後、 を呼び出して受信登録を行うことができますsetOnSeekCompleteListener()。次に、リスナーの実装で を呼び出す必要がありますVideoView.start()。
Vitamioライブラリの VideoView クラスを試しましたか?
メソッドが適切に動作するためseekTo()には、ビデオの状態が である必要がありPlaybackStateます。
詳細については、こちらのVideoView ソースをご覧ください。
このソリューションは機能するはずです。問題は、内部のメディアプレーヤーvideoViewが作成されていない可能性があります。
デバイスの向きを変えることで簡単にテストできます。それが私がそれをテストした方法です。
videoView.setOnPreparedListener(onPreparedListener);
private MediaPlayer.OnPreparedListener onPreparedListener = new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.seekTo(videoPosition);
}
};