アプリケーションに問題があり、次のように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);
}
};