2016-09-15 81 views
1

兩個問題:Android的MediaPlayer的`Prepared`和`OnPlayStarted`問題

沒有子,是可以直接從MediaPlayer實例告訴無論是在Prepared狀態或不 - 甚至是得到它的狀態下所有?我讀過this並通過了MediaPlayer docs,看起來沒有辦法。我懷疑我唯一的出路是繼承,但我想盡可能避免它。

二,我看過那裏可以有latency between OnPreparedListener and playback actually beginning。有沒有辦法說明MediaPlayer實例何時開始播放本地文件?我已經嘗試連接到OnBufferingUpdateListener,OnInfoListenerOnSeekCompleteListener的聽衆,但在爲本地文件調用start()後,它們似乎沒有被觸發。除了投票,看看getCurrentPosition()是否已經發生了變化(無可否認是一個愚蠢的想法),我看不出有什麼辦法來確定這是否可能。

回答

2

回答你的第一個問題:我不認爲MediaPlayer本身維持一個當前狀態,或者至少我從來沒有遇到過任何東西,即使我下載的示例應用程序使用包裝器或子類並維護狀態MediaPlayer。我在我的應用中也做了同樣的事情。

要回答第二個問題,您可以在OnInfoListener回調中使用MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START,但只能在API 17及更高版本中使用。根據該文檔

MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START 

玩家只要推的第一個視頻幀進行渲染。

+0

感謝您的支持。可悲的是,我正在使用一個音頻文件,並且'onInfo()'永遠不會被調用。我想我會繼承MediaPlayer的子類,並且我希望延遲從來不是問題(不是顯示屏,但仍然是一個煩惱)。 – Andrew