MediaPlayer的生命週期以及狀態轉換

2021-06-22 13:16:17 字數 1155 閱讀 8894

有關如何使用mediaplayer的更多資訊,請閱讀media playback開發人員指南。

statediagram(狀態圖)

從這個狀態圖,可以看到,乙個mediaplayer物件有以下狀態:

此外,使用new建立的mediaplayer物件處於idle狀態,而用乙個過載的構造方法new出來的mediaplayer物件不處在idle狀態。事實上,如果使用該構造方法成功建立乙個mediaplayer物件,該物件是在prepared 狀態。

。為了重用乙個處於錯誤狀態的mediaplayer物件,可以呼叫reset方法使這個物件從錯誤狀態轉換到idle狀態

。如果在其他任何狀態下呼叫 setdatasource() 都會產生乙個 illegalstateexception 異常

。一直監聽過載 setdatasource 方法產生的illegalargumentexception  和ioexception是乙個很好的程式設計習慣

。需要強調說明的是:preparing 狀態是乙個臨時狀態,如果mediaplayer物件處於preparing 狀態,呼叫其他方法,該物件產生的行為時不確定的。

。如果在其他狀態呼叫 prepare() or prepareasync()會丟擲乙個illegalstateexception 異常

。如果mediaplayer物件處於prepared 狀態,例如音訊音量,screenonwhileplaying,迴圈次數等屬性可以通過呼叫相應的set方法設定

。如果乙個對應已經處於started 狀態,再次呼叫start()將不會對該mediaplayer物件產生影響

。如果乙個物件已經處於paused 狀態,呼叫pause() 將不會對該mediaplayer物件產生任何影響

。如果乙個物件處於stopped狀態,呼叫stop()不會對該物件產生任何影響

。需要注意的是 seekto(int) 也可以在其他的狀態被呼叫,例如prepared, paused and playbackcompleted 狀態

。如果迴圈模式已被設定為true通過setlooping(boolean),mediaplayer物件將回到started狀態。

MediaPlayer生命週期

如果使用時mediaplayer的狀態不正確則會引發illegalstateexception異常。idle 狀態 當使用new 方法建立乙個mediaplayer物件或者呼叫了其reset 方法時,該mediaplayer物件處於idle狀態。這兩種方法的乙個重要差別就是 如果在這個狀態下呼叫了g...

android 的mediaPlayer一些屬性

方法 說明mediaplayer 構造方法 create getcurrentposition getduration 得到檔案的時間 getvideoheight getvideowidth islooping isplaying pause 暫停prepare 準備 同步 prepareasyn...

MediaPlayer控制項的初探

mediaplayer控制項為silverlight附帶的乙個附加在vs2008開發環境的乙個控制項。在初安裝silverlight2.0 for vs2008支援時,工具欄只多了2個選項,乙個是silverlight,另外乙個就是mediaplayer asp asp mediaplayer id...