Share via


MediaPlayer 類別

定義

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

[Android.Runtime.Register("android/media/MediaPlayer", DoNotGenerateAcw=true)]
public class MediaPlayer : Java.Lang.Object, Android.Media.IAudioRouting, Android.Media.IVolumeAutomation, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("android/media/MediaPlayer", DoNotGenerateAcw=true)>]
type MediaPlayer = class
    inherit Object
    interface IAudioRouting
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface IVolumeAutomation
繼承
MediaPlayer
屬性
實作

備註

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

MediaPlayer 不是安全線程。 建立 和 所有播放機實例的存取權都應該位於相同的執行緒上。 如果註冊回呼,執行緒必須有 Looper。

這裡涵蓋的主題包括:ol > li State Diagram < li Valid and Invalid States >< li Permissions < li >> Register informational and error callbacks < /ol ><<>

<div class=「special reference」 >< h3 > Developer Guides < /h3>

如需如何使用 MediaPlayer 的詳細資訊,請參閱 媒體播放 開發人員指南。

</Div>

「StateDiagram」 >< h3 > State Diagram < /h3>

音訊/視訊檔案和資料流程的播放控制會以狀態電腦的形式管理。 下圖顯示支援的播放控制項作業所驅動之 MediaPlayer 物件的生命週期和狀態。 橢圓形代表 MediaPlayer 物件可能所在的狀態。 弧線代表驅動物件狀態轉換的播放控制項作業。 弧線有兩種類型。 具有單一箭頭的弧形代表同步方法呼叫,而具有雙箭頭的弧形則代表非同步方法呼叫。

<img src=「../../../images/mediaplayer_state_diagram.gif「 alt=」MediaPlayer State diagram「 border=」0「 />

在此狀態圖中,您可以看到 MediaPlayer 物件具有下列狀態:

<ul >< li > 使用 或 之後建立 new MediaPlayer 物件時 #reset() ,它是處於 < em > Idle < /em > 狀態;在呼叫 之後 #release() ,它會處於 < em > End < /em > 狀態。 在這兩種狀態之間,是 MediaPlayer 物件的生命週期。 <ul >< li > 在呼叫 之後 #reset() ,新建構的 MediaPlayer 物件與 MediaPlayer 物件之間有一些細微但重要的差異。 在兩種情況下,叫用方法的程式設計錯誤,例如 #getCurrentPosition()#getDuration()#getVideoHeight()#setLooping(boolean)#getVideoWidth()#pause()#setAudioAttributes(AudioAttributes)#setVolume(float, float)#start() 、、 #stop()#prepare()#seekTo(long, int)#prepareAsync()< em > Idle < /em > 狀態。 如果在建構 MediaPlayer 物件之後立即呼叫這些方法,則內部播放程式引擎不會呼叫使用者提供的回呼方法 OnErrorListener.onError () ,而且物件狀態保持不變;但是,如果在 之後 #reset() 呼叫這些方法,則使用者提供的回呼方法 OnErrorListener.onError () 將會由內部播放程式引擎叫用,並將物件傳送至 < em > Error < /em > 狀態。 </li li ><> 您必須保留 MediaPlayer 實例的參考,以防止被垃圾收集。 如果 MediaPlayer 實例是垃圾收集的, #release 將會呼叫 ,導致任何進行中的播放停止。 <li > 當您使用 實例完成之後,您必須呼叫 #release() ,以釋放取得的資源,例如記憶體和編解碼器。 呼叫 #release 之後,您就不能再與已發行的實例互動。 <使用 建立的 li > MediaPlayer 物件處於 < em > Idle < /em > 狀態,而使用其中一個多載便利 create 方法建立的物件則是 < em Not < /em 處於 < em >> Idle < / > em > 狀態。 new 事實上,如果使用 create 方法建立成功,則物件會處於 < em > Prepared < /em > 狀態。 </li >< /ul >< /li >< li > 一般而言,某些播放控制作業可能會因為各種原因而失敗,例如不支援的音訊/視訊格式、交錯的音訊/視訊、解析度太高、串流逾時等等。 因此,在這些情況下,錯誤報表和復原是一個重要考慮。 有時候,由於程式設計錯誤,叫用處于無效狀態的播放控制項作業也可能發生。 在所有這些錯誤狀況下,如果 OnErrorListener #setOnErrorListener(android.media.MediaPlayer.OnErrorListener) 事先透過 註冊 OnErrorListener,內部播放程式引擎會叫用使用者提供的 OnErrorListener.onError () 方法。 <ul >< li > 請務必注意,一旦發生錯誤,MediaPlayer 物件就會進入 < em > Error < /em > 狀態 (,但如上述) 所述,即使應用程式尚未註冊錯誤接聽程式也一樣。 </li >< li > 若要重複使用處于 < em > Error < /em > 狀態的 MediaPlayer 物件,並從錯誤中復原, #reset() 可以呼叫 以將物件還原至其 < em > Idle < /em > 狀態。 </li li ><> 讓您的應用程式註冊 OnErrorListener 以尋找來自內部播放程式引擎的錯誤通知是不錯的程式設計做法。 <會擲回 /li ><> IllegalStateException 以防止程式設計錯誤,例如呼叫 #prepare()#prepareAsync() 或處於無效狀態的其中一個多載 setDataSource 方法。 </li >< /ul >< /li >>< 呼叫 #setDataSource(FileDescriptor) 、 或 #setDataSource(String) 、 或 #setDataSource(Context, Uri) , 或 #setDataSource(FileDescriptor, long, long) ,或 #setDataSource(MediaDataSource) 將 em > Idle < /em > 狀態中的 < MediaPlayer 物件傳送至 < em > Initialized < /em > 狀態。 <ul li 如果 setDataSource () 以任何其他狀態呼叫,則會擲回 ul >< li > An IllegalStateException。 </li >< li > 最好一律查看 IllegalArgumentException ,而且 IOException 可能會從多 setDataSource 載方法擲回。 </li >< /ul >< /li li >>< A MediaPlayer 物件必須先進入 < em > Prepared < /em > 狀態,才能啟動播放。 <ul > li 有兩種方式 (同步與非同步) < 可以達到 em > Prepared/em > 狀態:呼叫 (同步) >< ,一旦方法呼叫 #prepare() 傳回 em Prepared << /em > 狀態,或 #prepareAsync() 呼叫 (非同步) 第一次將物件傳送至 < em Prepare < /em >>><呼叫傳回之後的狀態 (幾乎會立即發生) ,而內部播放程式引擎會繼續處理其餘的準備工作,直到準備工作完成為止。 當準備完成或呼叫傳回時 #prepare() ,內部播放程式引擎接著會呼叫使用者提供的回呼方法 OnPreparedListener 介面 onPrepared () ,如果 OnPreparedListener 事先透過 #setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener) 註冊。 </li >< li > 請務必注意, < em > Preparing < /em > 狀態是暫時性狀態,而且當 MediaPlayer 物件處於 < em > Preparing < /em > 狀態時呼叫任何具有副作用的方法行為是未定義。 </li >< li > 如果 #prepare()#prepareAsync() 以任何其他狀態呼叫,則會擲回 IllegalStateException。 </li li ><> 在 em > Prepared < /em > 狀態中 < ,音訊/聲音音量、screenOnWhilePlaying 等屬性可以藉由叫用對應的 set 方法來調整迴圈。 </li >< /ul >< /li li >>< 若要開始播放, #start() 必須呼叫 。 成功傳回之後 #start() ,MediaPlayer 物件會處於 < em > Started < /em > 狀態。 #isPlaying() 可以呼叫 來測試 MediaPlayer 物件是否處於 < em > Started < /em > 狀態。 <ul > li In the < em > Started < /em > state, the internal player engine if a onBufferingUpdateListener.onBufferingUpdate () callback method if a OnBufferingUpdateListener has registered beforehanded via #setOnBufferingUpdateListener(OnBufferingUpdateListener) . >< 此回呼可讓應用程式在串流音訊/視訊時追蹤緩衝狀態。 </li >< li > 呼叫 #start() 不會影響已處於 em > Started < /em > 狀態的 < MediaPlayer 物件。 </li >< /ul >< /li ><> Li 播放可以暫停和停止,而且可以調整目前的播放位置。 您可以透過 #pause() 暫停播放。 當 呼叫傳 #pause() 回時,MediaPlayer 物件會進入 < em > Paused < /em > 狀態。 請注意,從 < em Started < /em > 狀態轉換至 < em > Paused < /em > 狀態,反之亦然,會在播放機引擎中以 > 非同步方式進行。 在呼叫 #isPlaying() 中更新狀態之前,可能需要一些時間,而且在串流內容的情況下可能是秒數。 <ul >< li > 呼叫 #start() 以繼續播放已暫停的 MediaPlayer 物件,而繼續播放位置與暫停的位置相同。 當 呼叫 #start() 傳回時,暫停的 MediaPlayer 物件會回到 < em > Started < /em > 狀態。 </li ><> li 呼叫 #pause() 不會影響已處於 em > Paused < /em > 狀態的 < MediaPlayer 物件。 </li >< /ul >< /li >>< 呼叫 #stop() 會停止播放,並讓 em > Started < /em > 、em > Paused < / > em、 << em > Prepared < / > em 或 < em > PlaybackCompleted/em > 狀態的 < MediaPlayer 進入 < em > Stopped << /em > 狀態。 <ul >< li > 一旦處於 < em > Stopped < /em > 狀態,在呼叫 或 #prepareAsync() 將 MediaPlayer 物件再次設定為 < em > Prepared < /em > 狀態之前 #prepare() ,無法啟動播放。 </li ><> li 呼叫 #stop() 對已經處於 em > Stopped < /em > 狀態的 < MediaPlayer 物件沒有任何作用。 </li >< /ul >< /li li >>< 可以透過呼叫 #seekTo(long, int) 來調整播放位置。 <ul >< li > 雖然非同步 #seekTo(long, int) 呼叫會立即傳回,但實際的搜尋作業可能需要一段時間才能完成,特別是在串流處理音訊/視訊時。 當實際的搜尋作業完成時,內部播放程式引擎會在透過 預先 #setOnSeekCompleteListener(OnSeekCompleteListener) 註冊 OnSeekComplete.onSeekComplete () 時呼叫使用者提供的 OnSeekComplete () 。 </li >< li > 請注意, #seekTo(long, int) 也可以在其他狀態中呼叫,例如 < em > Prepared < /em > 、 < em > Paused < /em > 和 < em > PlaybackCompleted < /em > state。 在這些狀態中呼叫 時 #seekTo(long, int) ,如果串流有視訊且要求的位置有效,則會顯示一個視訊畫面。 </li >< li > 此外,可以使用 呼叫 #getCurrentPosition() 來擷取實際的目前播放位置,這對需要追蹤播放進度的音樂播放程式之類的應用程式很有説明。 </li >< /ul >< /li >< li > 當播放到達資料流程結尾時,播放就會完成。 <ul >< li > 如果迴圈模式設定為 < var true < /var >> 與 #setLooping(boolean) ,則 MediaPlayer 物件應保持 <> em Started < /em > 狀態。 </li >< li > 如果迴圈模式設定為 < var false < /var >> ,播放程式引擎會呼叫使用者提供的回呼方法 OnCompletion.onCompletion () ,如果事先 #setOnCompletionListener(OnCompletionListener) 透過 註冊 OnCompletionListener。 回呼的叫用表示物件現在處於 < em > PlaybackCompleted < /em > 狀態。 </li >< li > 在 em > PlaybackCompleted < /em > 狀態中 < ,呼叫 #start() 可以從音訊/視訊來源的開頭重新開機播放。 </li >< /ul>

「Valid_and_Invalid_States」 >< h3 > 有效且不正確狀態 < /h3>

<table border=「0」 cellspacing=「0」 cellpadding=「0」 > tr td > 方法名稱 < /p >< / ><> td td 有效狀態 /p >< /td ><> td 無效狀態 << /p/td td 批註 < / >< p >< /td <><>> /tr >><<> td attachAuxEffect < /p >< /td >< td td > {Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted} < /p >< /td td ><> {Idle, Error} < /p/ ><><<td td ><> 這個方法必須在 setDataSource 之後呼叫。 呼叫它並不會變更物件狀態。 </p >< /td/tr >< tr >< td >>< getAudioSessionId < /p >< /td ><> td any < /p/td >< td >{}< /p ><>< /td td >>< 此方法可以在任何狀態中呼叫,而且呼叫此方法並不會變更物件狀態。 </p >< /td/tr >< td ><>>< getCurrentPosition < /p >< /td td >>< {Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}/p/td >< td td > {Error} << /p ><>< /td >< td td > 在有效狀態中成功叫用此方法不會變更狀態。 以無效狀態呼叫這個方法會將物件傳送至 < em > Error < /em > 狀態。 </p >< /td/tr >< tr >< td >>< getDuration < /p >< /td td ><> {Prepared, Started, Paused, Stopped, PlaybackCompleted} < /p >< /td td >< td > {Idle, Initialized, Error} < /p >< /td >< td td > 此方法的有效狀態叫用不會變更狀態。 以無效狀態呼叫這個方法會將物件傳送至 < em > Error < /em > 狀態。 </p >< /td/tr >< td ><>>< getVideoHeight < /p >< /td <> td > {Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}/p >< /td <> td td > {Error} << /p >< /td td td ><> 此方法的有效狀態叫用不會變更狀態。 以無效狀態呼叫這個方法會將物件傳送至 < em > Error < /em > 狀態。 </p >< /td/tr tr ><>< td >>< getVideoWidth < /p >< /td >< td > {Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}/p >< /td >< td td > {Error} << /p >< /td td td ><> 此方法的有效狀態不會變更狀態。 以無效狀態呼叫這個方法會將物件傳送至 < em > Error < /em > 狀態。 </p >< /td/tr >< tr >< td >>< isPlaying < /p >< /td td >>< {Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}/p/td >< td > {Error} << /p ><>< /td >< td td > 在有效狀態中成功叫用此方法不會變更狀態。 以無效狀態呼叫這個方法會將物件傳送至 < em > Error < /em > 狀態。 </p/td/tr >><< td ><> pause < /p ><>< /td <> td > {Started, Paused, PlaybackCompleted} < /p >< /td td ><> {Idle, Initialized, Prepared, Stopped, Error} < /p >< /td <> td td > 在有效的狀態中成功叫用此方法,會將物件傳送至 < em > Paused < /em > 狀態。 以無效狀態呼叫這個方法會將物件傳送至 < em > Error < /em > 狀態。 </p/td/tr ><>< td >>< prepare < /p ><>< /td <> td > {Initialized, Stopped} < /p >< /td <> td > {Idle, Prepared, Started, Paused, PlaybackCompleted, Error} < /p >< /td <> td td > 在有效的狀態下成功叫用此方法,會將物件傳送至 < em > Prepared < /em > 狀態。 以無效狀態呼叫這個方法會擲回 IllegalStateException。 </p >< /td/tr >< td ><><> prepareAsync < /p >< /td td ><> {Initialized, Stopped} < /p >< /td >< td > {Idle, Prepared, Started, Paused, PlaybackCompleted, Error} < /p >< /td >< td td > 在有效的狀態下成功叫用此方法,會將物件傳送至 < em Prepare < /em >> 狀態。 以無效狀態呼叫這個方法會擲回 IllegalStateException。 </p >< /td/tr >< td ><>>< release < /p >< /td ><> td any < /p >< /td td >< td >{}< /p >< /td <> td > After , #release() 您不得與物件互動。 </p/td/tr > td ><>>< reset < /p ><>< /td >< td > {Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error} < /p >< /td td <> td >{}< /p >< /td <> td > After #reset() , 物件就像剛建立一樣。 <</p >< /td/tr ><>< td >>< seekTo < /p >< /td <> td > {Prepared, Started, Paused, PlaybackCompleted} < /p >< /td <> td > {Idle, Initialized, Stopped, Error} < /p >< /td td >< td > 此方法的有效狀態叫用不會變更狀態。 以無效狀態呼叫這個方法會將物件傳送至 < em > Error < /em > 狀態。 </p >< /td/tr >< td ><>>< setAudioAttributes < /p >< /td <> td > {Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}/p >< /td <> td td > {Error} << /p >< /td td td ><> 此方法的成功叫用不會變更狀態。 為了讓目標音訊屬性類型生效,必須在 prepare () 或 prepareAsync () 之前呼叫此方法。 </p >< /td/tr >< td ><>>< setAudioSessionId < /p >< /td <> td > {Idle} < /p >< /td <> td > {Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error} < /p >< /td td >< td > 這個方法必須在閒置狀態呼叫,因為呼叫 setDataSource 之前必須知道音訊會話識別碼。 呼叫它並不會變更物件狀態。 </p >< /td/tr >< td ><><> setAudioStreamType (已淘汰) < /p >< /td <> td > {Idle,Initialized,Stopped,Prepared, Started, Paused, PlaybackCompleted}/p >< /td td td ><> {Error} << /p >< /td td >< td td > 此方法的成功叫用不會變更狀態。 為了讓目標音訊串流類型生效,必須在 prepare () 或 prepareAsync () 之前呼叫此方法。 </p >< /td/tr >< tr >< td >>< setAuxEffectSendLevel < /p >< /td >< td > any < /p/td >< td >{}< /p ><>< /td >< td > 呼叫此方法並不會變更物件狀態。 </p >< /td/tr >< tr >< td >>< setDataSource < /p >< /td td ><> {Idle} < /p >< /td td >>< {Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error} < /p >< /td >< td td > 在有效狀態中成功叫用此方法, 會將物件傳送至 < em > Initialized < /em > 狀態。 以無效狀態呼叫這個方法會擲回 IllegalStateException。 </p >< /td/tr >< td ><>>< setDisplay < /p >< /td <>> 任何 < /p >< /td >< td >{}< /p >< /td td ><> 這個方法可以在任何狀態中呼叫,呼叫此方法並不會變更物件狀態。 </p >< /td/tr >< tr >< td >>< setSurface < /p >< /td >>< any < /p >< /td >< td >{}< /p >< /td td ><> 這個方法可以在任何狀態中呼叫,呼叫此方法並不會變更物件狀態。 </p >< /td/tr >< tr >< td >>< setVideoScalingMode < /p >< /td >< td > {Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted} < /p >< /td >< td td > {Idle, Error} < /p >< /td td >< td > 成功叫用此方法不會變更狀態。 </p >< /td/tr >< tr >< td >>< setLooping < /p >< /td td >>< {Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}/p/td >< td > {Error} << /p ><>< /td td >< td > 在有效狀態中成功叫用此方法不會變更狀態。 呼叫處於無效狀態的此方法會將物件傳送至 < em > Error < /em > 狀態。 </p >< /td/tr >< td >><>< isLooping < /p >< /td td <>> 任何 < /p >< / >< td td >{}< /p >< /td td ><> 此方法可以在任何狀態呼叫,而且呼叫此方法不會變更物件狀態。 </p >< /td/tr tr ><>< td >>< setOnBufferingUpdateListener < /p >< /td td ><> any < /p >< / >< td td >{}< /p >< /td td >>< 這個方法可以在任何狀態中呼叫,而且呼叫此方法不會變更物件狀態。 </p >< /td/tr tr ><>< td >>< setOnCompletionListener < /p >< /td td ><> 任何 < /p >< / >< td td >{}< /p >< /td td >>< 此方法可以在任何狀態呼叫,而且呼叫此方法不會變更物件狀態。 </p >< /td/tr tr ><>< td >>< setOnErrorListener < /p >< /td td ><> 任何 < /p >< / >< td td >{}< /p >< /td td >>< 這個方法可以在任何狀態呼叫,而且呼叫此方法不會變更物件狀態。 </p >< /td/tr tr ><<> td >>< setOnPreparedListener < /p >< /td td ><> 任何 < /p ><>< /td td td >{}< /p >< /td td ><> 此方法可以在任何狀態呼叫,而且呼叫此方法不會變更物件狀態。 </p >< /td/tr tr ><>< td >>< setOnSeekCompleteListener < /p >< /td td ><> any < /p >< / >< td td >{}< /p >< /td td >>< 這個方法可以在任何狀態呼叫,而且呼叫此方法不會變更物件狀態。 </p >< /td/tr >< td ><>>< setPlaybackParams < /p >< /td <> td > {Initialized, Prepared, Started, Paused, PlaybackCompleted, Error}/p >< /td <> td > {Idle, Stopped} << /p >< /td td ><> 此方法會根據呼叫時變更狀態。 </p >< /td/tr >< td ><><> setScreenOnWhilePlaying < / >< /td td <> 任何 >< /p >< / >< td td >{}< /p >< /td td ><> 此方法可以在任何狀態呼叫,呼叫此方法並不會變更物件狀態。 </p >< /td/tr tr ><<> td >>< setVolume < /p >< /td >< td > {Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}/p/td >< td > {Error} << /p ><>< /td td td ><> 此方法的成功叫用不會變更狀態。 <tr >< td > setWakeMode < /p/td td > any < /p >< /td >><< td >{}< /p ><>< /td td >>< 此方法可以在任何狀態呼叫,呼叫此方法並不會變更物件狀態。 </p >< /td/tr >< td >><>< start < /p >< /td td >>< {Prepared, Started, Paused, PlaybackCompleted} < /p >< /td td ><> {Idle, Initialized, Stopped, Error} < /p >< /td td td >>< 成功叫用此方法的有效狀態會將物件傳送至 < em > Started < /em > 狀態。 呼叫處於無效狀態的此方法會將物件傳送至 < em > Error < /em > 狀態。 </p >< /td/tr >< tr >< td >>< stop < /p >< /td td >>< {Prepared, Started, Stopped, Paused, PlaybackCompleted} < /p >< /td td ><> {Idle, Initialized, Error} < /p >< /td td td >>< 成功叫用此方法的有效狀態會將物件傳送至 < em > Stopped < /em > 狀態。 呼叫處於無效狀態的此方法會將物件傳送至 < em > Error < /em > 狀態。 </p >< /td/tr tr ><<> td >>< getTrackInfo < /p >< /td >< td > {Prepared, Started, Stopped, Paused, PlaybackCompleted} < /p >< /td td ><> {Idle, Initialized, Error} < /p >< /td td td <>> 此方法的成功叫用不會變更狀態。 </p >< /td/tr tr ><<> td > addTimedTextSource <>< /p >< /td >< td > {Prepared, Started, Stopped, Paused, PlaybackCompleted} < /p >< /td td ><> {Idle, Initialized, Error} < /p >< /td td td <>> 此方法的成功叫用不會變更狀態。 </p >< /td/tr tr ><<> td >>< selectTrack < /p >< /td >< td > {Prepared, Started, Stopped, Paused, PlaybackCompleted} < /p >< /td td ><> {Idle, Initialized, Error} < /p >< /td td td <>> 成功叫用此方法不會變更狀態。 </p >< /td/tr >< td >><>< deselectTrack < /p >< /td <> td > {Prepared, Started, Stopped, Paused, PlaybackCompleted} < /p >< /td td ><> {Idle, Initialized, Error} < /p >< /td td td <>> 成功叫用此方法不會變更狀態。 </p >< /td >< /tr>

</表>

「Permissions」 >< h3 > Permissions < /h3>

其中一個可能需要宣告對應的WAKE_LOCK許可權 android.R.styleable#AndroidManifestUsesPermission &lt;uses-permission&gt; 元素。

這個類別需要 android.Manifest.permission#INTERNET 搭配網路內容使用時的許可權。

「Callbacks」 >< h3 > Callbacks < /h3>

應用程式可能會想要註冊資訊事件和錯誤事件,以在播放或串流期間收到某些內部狀態更新和可能的執行時間錯誤。 註冊這些事件的方式是透過呼叫 #setOnPreparedListener(OnPreparedListener) setOnPreparedListener#setOnVideoSizeChangedListener(OnVideoSizeChangedListener) setOnVideoSizeChangedListener#setOnSeekCompleteListener(OnSeekCompleteListener) setOnSeekCompleteListener#setOnInfoListener(OnInfoListener) setOnInfoListener#setOnCompletionListener(OnCompletionListener) setOnCompletionListener#setOnBufferingUpdateListener(OnBufferingUpdateListener) setOnBufferingUpdateListener#setOnErrorListener(OnErrorListener) setOnErrorListener 等) 正確設定適當的接聽程式 (。 為了接收與這些接聽程式相關聯的個別回呼,應用程式必須線上程上建立 MediaPlayer 物件,且執行緒上執行自己的 Looper,預設會執行主要 UI 執行緒 (有迴圈器執行) 。

android.media.MediaPlayer JAVA 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據中所述的詞彙使用。

建構函式

MediaPlayer()

預設建構函式。

MediaPlayer(Context)

具有內容的預設建構函式。

MediaPlayer(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 標記法時所使用的建構函式;由執行時間呼叫。

欄位

MediaErrorIo
已淘汰.

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

MediaErrorMalformed
已淘汰.

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

MediaErrorTimedOut
已淘汰.

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

MediaErrorUnsupported
已淘汰.

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

MediaMimetypeTextSubrip

SubRip (SRT) 容器的 MIME 類型。

VideoScalingModeScaleToFit
已淘汰.

指定視訊縮放模式。

VideoScalingModeScaleToFitWithCropping
已淘汰.

指定視訊縮放模式。

屬性

AudioSessionId

傳回音頻會話識別碼。 -或- 設定音訊會話識別碼。

Class

傳回這個 Object 的執行時間類別。

(繼承來源 Object)
CurrentPosition

取得目前的播放位置。

Duration

取得檔案的持續時間。

Handle

基礎 Android 實例的控制碼。

(繼承來源 Object)
IsPlaying

檢查 MediaPlayer 是否現正播放。

JniIdentityHashCode

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
JniPeerMembers

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

Looping

檢查 MediaPlayer 是否正在迴圈或非迴圈。 -或- 將播放程式設定為迴圈或非迴圈。

Metrics

傳回目前播放機的相關計量資料。

PeerReference

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
PlaybackParams

取得包含目前播放速率的播放參數。 -或- 使用 PlaybackParams 設定播放速率。

PreferredDevice

傳回 所 #setPreferredDevice 指定的選取輸出。

RoutedDevice

AudioDeviceInfo 回識別此 MediaPlayer 注意的目前路由:只有在 MediaPlayer 目前現正播放時,查詢才有效。

SyncParams

取得 A/V 同步模式。 -或- 設定 A/V 同步模式。

ThresholdClass

此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式碼使用。

ThresholdType

此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式碼使用。

Timestamp

以 取得目前的播放位置 MediaTimestamp

VideoHeight

傳回視訊的高度。

VideoWidth

傳回視訊的寬度。

方法

AddOnRoutingChangedListener(IAudioRoutingOnRoutingChangedListener, Handler)

新增 , AudioRouting.OnRoutingChangedListener 以接收此 MediaPlayer 上路由變更的通知。

AddTimedTextSource(Context, Uri, String)

(Uri) 新增外部計時文字檔。

AddTimedTextSource(FileDescriptor, Int64, Int64, String)

(FileDescriptor) 新增外部計時文字檔。

AddTimedTextSource(FileDescriptor, String)

(FileDescriptor) 新增外部計時文字檔。

AddTimedTextSource(String, String)

新增外部計時文本來源檔案。

AttachAuxEffect(Int32)

將輔助效果附加至玩家。

ClearOnMediaTimeDiscontinuityListener()

清除先前設定的接聽程式#setOnMediaTimeDiscontinuityListener(OnMediaTimeDiscontinuityListener)#setOnMediaTimeDiscontinuityListener(OnMediaTimeDiscontinuityListener, Handler)

ClearOnSubtitleDataListener()

清除先前使用 或 #setOnSubtitleDataListener(OnSubtitleDataListener, Handler) 設定 #setOnSubtitleDataListener(OnSubtitleDataListener) 的接聽程式。

Clone()

建立並傳回這個 物件的複本。

(繼承來源 Object)
Create(Context, Int32)

為指定的資源識別碼建立 MediaPlayer 的便利方法。

Create(Context, Int32, AudioAttributes, Int32)

與 相同的處理站方法 #create(Context, int) ,這可讓您指定新 MediaPlayer 實例要使用的音訊屬性和會話識別碼。

Create(Context, Uri)

為指定的 Uri 建立 MediaPlayer 的便利方法。

Create(Context, Uri, ISurfaceHolder)

為指定的 Uri 建立 MediaPlayer 的便利方法。

Create(Context, Uri, ISurfaceHolder, AudioAttributes, Int32)

與 相同的處理站方法 #create(Context, Uri, SurfaceHolder) ,這可讓您指定新 MediaPlayer 實例要使用的音訊屬性和會話識別碼。

CreateVolumeShaper(VolumeShaper+Configuration)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

DeselectTrack(Int32)

取消選取追蹤。

Dispose()

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
Dispose(Boolean)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
GetDrmInfo()

擷取與目前來源相關聯的 DRM 資訊

GetDrmPropertyString(String)

讀取 DRM 引擎外掛程式 String 屬性值,指定屬性名稱字串。

GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
GetKeyRequest(Byte[], Byte[], String, MediaDrmKeyType, IDictionary<String,String>)

應用程式與授權伺服器之間發生金鑰要求/回應交換,以取得或釋放用來解密加密內容的金鑰。

GetSelectedTrack(MediaTrackType)

傳回目前選取播放的音訊、視訊或副標題播放軌的索引,傳回值是 所傳回 #getTrackInfo() 陣列的索引,而且可用於 呼叫 #selectTrack(int)#deselectTrack(int)

GetTrackInfo()

傳回追蹤資訊的陣列。

JavaFinalize()

當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。

(繼承來源 Object)
Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
Pause()

暫停播放。

Prepare()

以同步方式準備播放程式。

PrepareAsync()

以非同步方式準備播放程式。

PrepareDrm(UUID)

準備目前來源的 DRM

ProvideKeyResponse(Byte[], Byte[])

應用程式會從授權伺服器收到金鑰回應,然後使用 provideKeyResponse 將其提供給 DRM 引擎外掛程式。

Release()

釋放與此 MediaPlayer 物件相關聯的資源。

ReleaseDrm()

釋放 DRM 會話

RemoveOnRoutingChangedListener(IAudioRoutingOnRoutingChangedListener)

AudioRouting.OnRoutingChangedListener移除先前新增以接收重新路由通知的 。

Reset()

將 MediaPlayer 重設為其未初始化的狀態。

RestoreKeys(Byte[])

將保存的離線金鑰還原至新的會話。

SeekTo(Int32)

搜尋至指定的時間位置。

SeekTo(Int64, MediaPlayerSeekMode)

考慮指定的模式,將媒體移至指定的時間位置。

SelectTrack(Int32)

選取追蹤。

SetAudioAttributes(AudioAttributes)

設定此 MediaPlayer 的音訊屬性。

SetAudioStreamType(Stream)

設定此 MediaPlayer 的音訊資料流程類型。

SetAuxEffectSendLevel(Single)

將播放程式的傳送層級設定為附加的輔助效果。

SetDataSource(AssetFileDescriptor)

(AssetFileDescriptor) 設定要使用的資料來源。

SetDataSource(Context, Uri)

將資料來源設定為內容 URI。

SetDataSource(Context, Uri, IDictionary<String,String>)

將資料來源設定為內容 URI。

SetDataSource(Context, Uri, IDictionary<String,String>, IList<HttpCookie>)

將資料來源設定為內容 URI。

SetDataSource(FileDescriptor)

設定要使用的資料來源 (FileDescriptor) 。

SetDataSource(FileDescriptor, Int64, Int64)

設定要使用的資料來源 (FileDescriptor) 。

SetDataSource(MediaDataSource)

設定要使用的資料來源 (MediaDataSource) 。

SetDataSource(String)

設定要使用的資料來源 (檔案路徑或 HTTP/rtsp URL) 。

SetDataSourceAsync(AssetFileDescriptor)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SetDataSourceAsync(Context, Uri)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SetDataSourceAsync(Context, Uri, IDictionary<String,String>)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SetDataSourceAsync(Context, Uri, IDictionary<String,String>, IList<HttpCookie>)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SetDataSourceAsync(FileDescriptor)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SetDataSourceAsync(FileDescriptor, Int64, Int64)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SetDataSourceAsync(MediaDataSource)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SetDataSourceAsync(String)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SetDisplay(ISurfaceHolder)

SurfaceHolder設定用來顯示媒體視訊部分的 。

SetDrmPropertyString(String, String)

設定 DRM 引擎外掛程式 String 屬性值。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetNextMediaPlayer(MediaPlayer)

將此 MediaPlayer 設定為在此 MediaPlayer 完成播放 (i 時啟動。

SetOnBufferingUpdateListener(MediaPlayer+IOnBufferingUpdateListener)

註冊在網路資料流程緩衝區的狀態變更時要叫用的回呼。

SetOnCompletionListener(MediaPlayer+IOnCompletionListener)

在播放期間到達媒體來源結尾時,註冊要叫用的回呼。

SetOnDrmConfigHelper(MediaPlayer+IOnDrmConfigHelper)

註冊回呼,以在建立會話之前叫用 DRM 物件的組態。

SetOnDrmInfoListener(MediaPlayer+IOnDrmInfoListener)

註冊在已知 DRM 資訊時要叫用的回呼。

SetOnDrmInfoListener(MediaPlayer+IOnDrmInfoListener, Handler)

註冊在已知 DRM 資訊時要叫用的回呼。

SetOnDrmPreparedListener(MediaPlayer+IOnDrmPreparedListener)

註冊備妥 DRM 物件時要叫用的回呼。

SetOnDrmPreparedListener(MediaPlayer+IOnDrmPreparedListener, Handler)

註冊備妥 DRM 物件時要叫用的回呼。

SetOnErrorListener(MediaPlayer+IOnErrorListener)

註冊在非同步作業期間發生錯誤時要叫用的回呼。

SetOnInfoListener(MediaPlayer+IOnInfoListener)

註冊在有資訊/警告可用時要叫用的回呼。

SetOnMediaTimeDiscontinuityListener(MediaPlayer+IOnMediaTimeDiscontinuityListener)

設定在遇到媒體時間不連續時叫用的接聽程式。

SetOnMediaTimeDiscontinuityListener(MediaPlayer+IOnMediaTimeDiscontinuityListener, Handler)

設定在遇到媒體時間不連續時叫用的接聽程式。

SetOnPreparedListener(MediaPlayer+IOnPreparedListener)

註冊媒體來源準備好播放時要叫用的回呼。

SetOnSeekCompleteListener(MediaPlayer+IOnSeekCompleteListener)

註冊在搜尋作業完成時要叫用的回呼。

SetOnSubtitleDataListener(MediaPlayer+IOnSubtitleDataListener)

設定子標題播放軌有新的可用資料時要叫用的接聽程式。

SetOnSubtitleDataListener(MediaPlayer+IOnSubtitleDataListener, Handler)

設定子標題播放軌有新的可用資料時要叫用的接聽程式。

SetOnTimedMetaDataAvailableListener(MediaPlayer+IOnTimedMetaDataAvailableListener)

註冊在選取的追蹤有可用的計時中繼資料時要叫用的回呼。

SetOnTimedTextListener(MediaPlayer+IOnTimedTextListener)

註冊在計時文字可供顯示時叫用的回呼。

SetOnVideoSizeChangedListener(MediaPlayer+IOnVideoSizeChangedListener)

註冊在已知或更新視訊大小時要叫用的回呼。

SetPreferredDevice(AudioDeviceInfo)

指定透過 AudioDeviceInfo 物件 (音訊裝置,) 從這個 MediaPlayer 路由輸出。

SetScreenOnWhilePlaying(Boolean)

控制是否應該使用附加的 SurfaceHolder,在影片播放發生時讓畫面保持開啟狀態。

SetSurface(Surface)

Surface設定做為媒體視訊部分接收的 。

SetVideoScalingMode(VideoScalingMode)

設定視訊縮放模式。

SetVolume(Single, Single)

設定此播放機上的音量。

SetWakeMode(Context, WakeLockFlags)

設定此 MediaPlayer 的低階電源管理行為。

Start()

啟動或繼續播放。

Stop()

在播放已啟動或暫停之後停止播放。

ToArray<T>()

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
Wait()

讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > 。 ><

(繼承來源 Object)
Wait(Int64)

讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <>

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <>

(繼承來源 Object)

事件

BufferingUpdate

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

Completion

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

DrmInfoEvent

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

DrmPrepared

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

Error

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

Info

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

MediaTimeDiscontinuity

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

Prepared

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

RoutingChanged

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SeekComplete

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

SubtitleData

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

TimedMetaDataAvailable

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

TimedText

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

VideoSizeChanged

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

明確介面實作

IJavaPeerable.Disposed()

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
IJavaPeerable.Finalized()

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

GetJniTypeName(IJavaPeerable)

MediaPlayer 類別可用來控制音訊/視訊檔案和資料流程的播放。

適用於