2012-04-26 12 views
5

工作有一個問題在我的申請,我想用seekTo()函數VideoView這樣的:的seekTo()函數不VideoView

videoView.seekTo(time); 
videoView.start(); 

它運作良好,在Android 2.2系統,但在android 2.3或更高版本中不起作用... 有些人會告訴我爲什麼?

+0

你確定你等了很長時間才決定它不工作嗎?例如,在我的一部LG手機中,seekTo就像永遠一樣。而在我的其他LG手機上,其實並不是那麼糟糕 – 2013-11-04 23:51:17

回答

1

爲了正確操作seekTo()方法,視頻狀態應該在PlaybackState

結賬的VideoViewsource here獲取更多信息。

3

撥打VideoView.start()只能在搜索結束後才能撥打。致電VideoView.seekTo()發起尋找,但不幸的是VideoView不支持OnSeekCompleteListener需要通知搜索實際完成。

您可以自定義VideoView以支持OnSeekCompleteListener,如my answer to 7990784所示。

然後,您可以通過致電setOnSeekCompleteListener()註冊以獲得onSeekComplete()。然後,您的聽衆實施應該叫VideoView.start()

+2

這簡直就是最好的答案。易於實施和實際工作。我在'onPrepared()'中獲得對'MediaPlayer'的引用,並用它來完成剩下的事情(設置'OnSeekListener'並調用'seekTo()')。 – Sufian 2015-06-04 10:44:54

0

該解決方案應該可以工作。 問題可能是videoView中的媒體播放器尚未創建。

通過改變設備的方向很容易進行測試。這就是我對它的測試。

videoView.setOnPreparedListener(onPreparedListener); 
private MediaPlayer.OnPreparedListener onPreparedListener = new MediaPlayer.OnPreparedListener() { 
    public void onPrepared(MediaPlayer mp) { 
     mp.seekTo(videoPosition); 
    } 
};