共用方式為


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>狀態圖</h3>

音訊/視訊檔案和數據流的播放控制是以狀態計算機管理。 下圖顯示支援的播放控件作業所驅動之 MediaPlayer 物件的生命週期和狀態。 橢圓形代表 MediaPlayer 物件可能位於的狀態。 弧線代表驅動物件狀態轉換的播放控制項作業。 弧線有兩種類型。 具有單一箭頭的弧線代表同步方法呼叫,而具有雙箭頭的弧形則代表異步方法呼叫。

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

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

<ul>li當 MediaPlayer 物件剛使用 new 或 呼叫之後建立時#reset(),它會處於 <em>Idle</em 狀態;呼叫之後#release(),它會處於 <em>End</em>> 狀態。>< 這兩種狀態之間的是 MediaPlayer 物件的生命週期。 <ul><li>在呼叫 之後 #reset() ,新建構的 MediaPlayer 物件與 MediaPlayer 對象之間有微妙但重要的差異。 針對這兩種情況,叫用方法的程式設計錯誤,例如 #getCurrentPosition()#getDuration()#setAudioAttributes(AudioAttributes)#getVideoWidth()#getVideoHeight()#start()#setVolume(float, float)#setLooping(boolean)#pause()、、 #prepare()#seekTo(long, int)#stop()#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>><一般而言,某些播放控制作業可能會因為各種原因而失敗,例如不支援的音訊/視訊格式、低交錯的音訊/視訊、解析度太高、串流逾時等。 因此,在這些情況下,錯誤報告和復原是一個重要問題。 有時候,由於程式設計錯誤,叫用處於無效狀態的播放控件作業也可能發生。 在所有這些錯誤狀況下,如果已事先 #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><li>IllegalStateException 擲回,以防止程式設計錯誤,例如呼叫 #prepare()#prepareAsync()或處於無效狀態的其中一個多載setDataSource 方法。 </li></ul<>/li li><>呼叫 #setDataSource(FileDescriptor)、或 、 #setDataSource(String)#setDataSource(Context, Uri)或 ,或 #setDataSource(FileDescriptor, long, long),或 #setDataSource(MediaDataSource) 會將 em Idle</em> 狀態中的 <MediaPlayer 物件傳輸至 <em>>Initialized</em> 狀態。 <ul><li>An IllegalStateException 會在任何其他狀態中呼叫 setDataSource() 時擲回。</li li><>最好一律留意IllegalArgumentException,而且IOException可能會從多載setDataSource方法擲回。</li></ul<>/li li<>>A MediaPlayer 對象必須先進入 <em>Prepared</em> 狀態,才能開始播放。 <ul>li有兩種方式(同步與異步)<可以到達 em>Prepared</em> 狀態:一旦方法呼叫#prepare()傳回,就會將物件傳輸至 <em>Prepared</em> 狀態,或先將對象傳送至 em Prepare/em 的呼叫,或先將對象傳送至 <em>Prepare</em> 的呼叫#prepareAsync()><呼叫傳回之後的狀態(幾乎立即發生),而內部播放機引擎會繼續處理其餘的準備工作,直到準備工作完成為止。 當準備完成或呼叫傳回時#prepare(),如果 OnPreparedListener 事先#setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)註冊 OnPreparedListener 介面,內部播放程式引擎會呼叫使用者提供的回呼方法 onPreparedListener。</li li>><請務必注意<,em>Preparing</em 狀態是暫時性狀態,且在 MediaPlayer 對象處於 <em>Preparing</em>> 狀態時呼叫任何具有副作用的方法的行為未定義。</li li><>An IllegalStateException 會在任何其他狀態中呼叫 或 #prepareAsync()#prepare()擲回。</li li><>在 em>Prepared</em> 狀態中<,音訊/聲音音量、screenOnWhilePlaying 等屬性可以叫用對應的 set 方法來調整迴圈。</li></ul<>/li li>><若要開始播放,#start()必須呼叫 。 成功傳回之後 #start() ,MediaPlayer 物件會處於 <em>Started</em> 狀態。 #isPlaying() 可以呼叫 來測試 MediaPlayer 物件是否處於 <em>Started</em> 狀態。 <ul><li>在 em>Started</em> 狀態中<,如果 OnBufferingUpdateListener 已事先#setOnBufferingUpdateListener(OnBufferingUpdateListener)註冊 OnBufferingUpdateListener.onBufferingUpdate() 回呼方法,內部播放器引擎就會呼叫使用者。 此回呼可讓應用程式在串流音訊/視訊時追蹤緩衝狀態。</li li><>呼叫#start()對已經處於 em>Started</em> 狀態的 <MediaPlayer 對象沒有任何作用。</li></ul></li li>><Playback 可以暫停和停止,而且可以調整目前的播放位置。 您可以透過 #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> 狀態,播放就無法啟動,直到#prepare()#prepareAsync()被呼叫將 MediaPlayer 物件設定為 <em>Prepared</em> 狀態為止。</li li><>呼叫#stop()不會影響已經處於 em>Stopped</em> 狀態的 <MediaPlayer 物件。</li></ul<>/li li>><可以透過呼叫 #seekTo(long, int)來調整播放位置。 <ul><li>雖然異步 #seekTo(long, int) 呼叫會立即傳回,但實際的搜尋作業可能需要一段時間才能完成,尤其是串流音訊/視訊。 當實際搜尋作業完成時,如果已事先#setOnSeekCompleteListener(OnSeekCompleteListener)透過 註冊 OnSeekCompleteListener,內部播放器引擎會呼叫提供 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,MediaPlayer #setLooping(boolean)>> 物件應維持在 <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><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>任何 </p></td><td>{}</p></td td>><此方法可以在任何狀態中呼叫,而且呼叫此方法不會變更物件狀態。 </p/td></tr 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><tr><td>getVideoHeight </p></td><td>{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}/p/td<>td>{Error}<</p><></td td>><成功叫用此方法的有效狀態不會變更狀態。 以無效狀態呼叫這個方法會將對象傳送至 <em>Error</em> 狀態。 </p></td></tr tr><<>td>getVideoWidth </p></td><td>{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}/p/td><td>{Error}<</p><></td td>><成功叫用此方法的有效狀態不會變更狀態。 以無效狀態呼叫這個方法會將對象傳送至 <em>Error</em> 狀態。 </p/td></tr><tr><td>isPlaying </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>>< 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 tr><><td>>< prepare </p></td><td td>{Initialized, Stopped}/p></td<>td>{Idle, Prepared, Started, Paused, PlaybackCompleted, Error}<</p></td td td<>>成功叫用此方法的有效狀態會將物件傳輸至 <em>Prepared</em> 狀態。 呼叫這個處於無效狀態的方法會擲回 IllegalStateException。</p></td></tr><tr><td>prepareAsync </p></td><td>{Initialized, Stopped}/p></td><td>{Idle, Prepared, Started, Paused, PlaybackCompleted, Error}<</p></td td<>td td>成功叫用此方法的有效狀態,會將對象傳輸至 <em>Prepare</em> 狀態。 呼叫這個處於無效狀態的方法會擲回 IllegalStateException。</p></td></tr tr><><td>release </p/td><td>any </p><></td><td td>{}</p></td td<>>After #release(),您不得與對象互動。 </p></td/tr tr><><td>>< reset </p></td><td>{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error}</p/td><td td>{}</p><></td td<>>After#reset(), the object is like just created.</p></td></tr 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 tr><<>td>setAudioAttributes </p></td><td>{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}/p/td><td>{Error}<</p><></td td>><成功叫用此方法不會變更狀態。 為了讓目標音訊屬性類型生效,必須在 prepare() 或 prepareAsync() 之前呼叫此方法。</p></td></tr 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 tr><<>td>setAudioStreamType (deprecated)</p></td td<>>{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}/p/td<>td> td{Error}<</p><></td td><td>成功叫用此方法不會變更狀態。 為了讓目標音訊數據流類型生效,必須在 prepare() 或 prepareAsync() 之前呼叫此方法。</p></td/tr tr><><td>>< setAuxEffectSendLevel </p></td><td>any</p></td><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><td>成功叫用此方法的有效狀態會將對象傳輸至 <em>Initialized</em> 狀態。 呼叫這個處於無效狀態的方法會擲回 IllegalStateException。</p></td></tr tr><<>td>setDisplay </p/td td>><any </p><></td><td>{}</p></td td>><此方法可以在任何狀態下呼叫,而且呼叫此方法不會變更對象狀態。 </p></td></tr><tr><td>setSurface </p></td><>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><>成功叫用此方法不會變更狀態。</p/td></tr><tr><td>setLooping </p><></td><td>{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}/p/td><td td>{Error}<</p><></td td td><>成功叫用此方法的有效狀態不會變更狀態。 以無效狀態呼叫這個方法會將對象傳送至 <em>Error</em> 狀態。</p></td></tr><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>{}</p></td td>><此方法可以在任何狀態中呼叫,而且呼叫此方法不會變更物件狀態。 </p></td></tr tr><><td>setOnSeekCompleteListener </p></td td any </p></td><>><td>{}</p></td td>><此方法可以在任何狀態下呼叫,而且呼叫此方法不會變更對象狀態。 </p></td/tr tr><><td>>< setPlaybackParams</p></td td><>{Initialized, Prepared, Started, Paused, PlaybackCompleted, Error}/p/td><td>{Idle, Stopped}<</p><></td td><td>此方法在某些情況下會根據呼叫時變更狀態。 </p></td></tr 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 td>{Error}<</p><></td td td><>成功叫用此方法不會變更狀態。 <tr><td>setWakeMode </p/td td><>任何 </p><></td><td>{}</p></td td>><此方法可以在任何狀態中呼叫,而且呼叫此方法不會變更對象狀態。</p></td/tr 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><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<>td>{Idle, Initialized, Error}<</p><></td td td><>成功叫用此方法不會變更狀態。</p></td></tr><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#setOnCompletionListener(OnCompletionListener) setOnCompletionListener#setOnBufferingUpdateListener(OnBufferingUpdateListener) setOnBufferingUpdateListener、、 #setOnInfoListener(OnInfoListener) setOnInfoListener#setOnErrorListener(OnErrorListener) setOnErrorListener等等)。 為了接收與這些接聽程式相關聯的個別回呼,應用程式必須在執行自己的 Looper 的線程上建立 MediaPlayer 物件(根據預設,主要 UI 線程有循環器正在執行)。

android.media.MediaPlayerJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

建構函式

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 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

ThresholdType

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

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)#setOnSubtitleDataListener(OnSubtitleDataListener, Handler)設定的接聽程式。

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)

設定要使用的數據源 (file-path 或 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 類別可用來控制音訊/視訊檔案和數據流的播放。

適用於