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 不是线程安全的。 创建玩家实例以及所有对玩家实例的访问权限都应位于同一线程上。 如果注册回调,则线程必须具有循环器。

此处介绍的主题包括: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>当刚刚使用 new 或调用后 #reset() 创建 MediaPlayer 对象时,它处于 <em>Idle</em> 状态;调用后 #release() ,它处于 <em>End</em> 状态。 在这两种状态之间是 MediaPlayer 对象的生命周期。 <ul><li>调用后 #reset() ,新构造的 MediaPlayer 对象与 MediaPlayer 对象之间存在细微但重要的区别。 调用两种情况的 em Idle/em> 状态等#prepareAsync()#getVideoHeight()#getVideoWidth()#getDuration()#setAudioAttributes(AudioAttributes)#getCurrentPosition()#setLooping(boolean)#setVolume(float, float)#seekTo(long, int)<#stop()#start()#prepare()#pause()方法是一个编程错误。<> 如果在构造 MediaPlayer 对象后立即调用上述任一方法,则内部玩家引擎不会调用用户提供的回调方法 OnErrorListener.onError(),并且对象状态保持不变;但是,如果在之后 #reset()调用这些方法,则由内部玩家引擎调用用户提供的回调方法 OnErrorListener.onError(),并且对象将传输到 <em>Error</em> 状态。 </li li><>必须保留对 MediaPlayer 实例的引用,以防止其被垃圾回收。 如果垃圾回收 MediaPlayer 实例, #release 将调用,导致任何正在进行的播放停止。 <li>在使用实例释放获取的资源(如内存和编解码器)后,必须调用 #release() 它。 调用 #release后,必须不再与已发布的实例进行交互。 <使用 创建的 li>MediaPlayer 对象处于 <em>Idle/em> 状态,而使用其中一种重载的方便create方法创建的对象在 em Idle<</em 状态中<为 <em>>NOT</em>>。new 事实上,如果使用create方法创建成功,则对象处于 <em>Prepared</em> 状态。 </li></ul></li li>><通常,某些播放控制操作可能会因各种原因而失败,例如不受支持的音频/视频格式、交错音频/视频、分辨率过高、流式处理超时等。 因此,在这些情况下,错误报告和恢复是一个重要问题。 有时,由于编程错误,调用处于无效状态的播放控件操作也可能发生。 在所有这些错误条件下,如果事先通过 #setOnErrorListener(android.media.MediaPlayer.OnErrorListener)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><>Calling#setDataSource(FileDescriptor),或#setDataSource(String),或#setDataSource(Context, Uri),或#setDataSource(FileDescriptor, long, long),或#setDataSource(MediaDataSource)传输一个处于 em>Idle</em 状态的 <MediaPlayer 对象<到 em>Initialized</em>> 状态。 <如果在任何其他状态下调用 setDataSource(),则会引发 ul><li>An IllegalStateException。</li li><>最好始终留意IOExceptionIllegalArgumentException,并且可能会从重载setDataSource方法引发。</li></ul></li li>><A MediaPlayer 对象必须先输入 <em>Prepared</em> 状态,然后才能启动播放。 <ul><li>可通过两种方式(同步与异步)<到达 em>Prepared</em 状态:#prepare()一旦方法调用返回,将对象传输到 em>Prepared</em>> 状态,或调用 #prepareAsync() (异步),首先将对象<<传输到 em>Prepared</em>调用返回后的状态(几乎立即发生),而内部玩家引擎将继续处理剩余的准备工作,直到准备工作完成。 当准备完成或调用返回时#prepare(),如果事先通过 #setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)OnPreparedListener 注册 OnPreparedListener,则内部播放器引擎将调用用户提供的回调方法 onPreparedListener。</li li>><请务必注意,<em>Preparing</em> 状态是暂时状态,当 MediaPlayer 对象处于 <em>Preparing</em> 状态时调用任何具有副作用的方法的行为是未定义的。</li li><>An IllegalStateException 是在#prepare()任何其他状态下调用或#prepareAsync()调用的。</li li><>在 em>Prepared</em> 状态中<,可以通过调用相应的设置方法来调整音频/声音音量、screenOnWhilePlaying 等属性。</li></ul></li li>><若要启动播放,#start()必须调用。 成功返回后 #start() ,MediaPlayer 对象处于 <em>Started</em> 状态。 #isPlaying() 可以调用以测试 MediaPlayer 对象是否处于 <em>Started</em> 状态。 <ul><li>在 em>Started</em> 状态中<时,如果已事先通过 #setOnBufferingUpdateListener(OnBufferingUpdateListener)OnBufferingUpdateListener 注册 OnBufferingUpdateListener.onBufferingUpdate() 回调方法,则内部播放器引擎将调用用户提供的 OnBufferingUpdateListener。 此回调允许应用程序在流式传输音频/视频时跟踪缓冲状态。</li li>><Calling #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>Calling #start() to resume playback for a paused MediaPlayer object, and the resumed playback position as the paused. 调用#start()返回时,暂停的 MediaPlayer 对象将返回到 <em>Started</em> 状态。</li><li>Calling #pause() 对已处于 em>Paused</em> 状态的 <MediaPlayer 对象没有影响。</li>/ul></li li>><呼叫#stop()停止播放,并导致 <em>Started</em、em Paused</em>>、<<em>>Prepared </>em 或 <em>PlaybackCompleted</em> 状态进入 <em>Stopped</em> 状态。< <ul><li>一旦处于 <em>Stopped</em> 状态,播放将无法启动,直到#prepare()#prepareAsync()被调用以再次将 MediaPlayer 对象设置为 <em>Prepared</em> 状态。</li><li>Calling #stop() 对已处于 em>Stopped</em> 状态的 <MediaPlayer 对象没有影响。</li></ul></li li>><可通过调用#seekTo(long, int)来调整播放位置。 <ul><li>虽然异步 #seekTo(long, int) 调用立即返回,但实际搜寻操作可能需要一段时间才能完成,尤其是流式传输音频/视频。 当实际查找操作完成时,如果事先通过 #setOnSeekCompleteListener(OnSeekCompleteListener)< 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>,#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 Method Name </p/td<>>>td Valid <States /p></td td Td Invalid States </p></td><>Comments </p><></<><>td>/tr><<>td>attachAuxEffect </p></td<>td td>{Initialized, 已准备好、已启动、已暂停、已停止、PlaybackCompleted}</p></td><td>{Idle、Error}</p/><><<td td><>此方法必须在 setDataSource 后调用。 调用它不会更改对象状态。 </p></td/tr><tr><td>>< getAudioSessionId </p></td td><>any </p></td><td td><<>{}<>> 此方法可以在任何状态下调用,并且调用此方法不会更改对象状态。 </p></td/tr><tr><td>>< getCurrentPosition </p></td td><>{Idle, Initialized, Prepared, Started, Paused, Stopped, Stopped, PlaybackCompleted}</p></td td td>{Error}</p></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>成功调用此方法的有效状态不会更改状态。 以无效状态调用此方法会将对象传输到 <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 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 td><>成功调用此方法的有效状态不会更改状态。 以无效状态调用此方法会将对象传输到 <em>Error</em> 状态。 </p></td></tr><tr><td>isPlaying </p></td td><>{Idle, Initialized, Prepared, Started, Paused, Stopped, Stopped, PlaybackCompleted}</p></td><td td>{Error}</p></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 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>><成功调用此方法的有效状态将对象传输到 <em>Prepared</em> 状态。 在无效状态下调用此方法将引发 IllegalStateException。</p></td></tr><tr><td>prepareAsync </p></td td><>{Initialized, Stopped}</p></td td><td>{Idle, Prepared, Started, Paused, PlaybackCompleted, Error}</p></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(), you must not interact with the object. </p></td/tr><tr><td>>< reset </p></td><td>{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error}</p><></td><<>td td td>>{}< After#reset(), the object is like is just created.</p></td></tr><tr><td>seekTo </p></td><td{Prepared, Started, Paused>, PlaybackCompleted}</p></td><td td>{Idle, Initialized, Stopped, Error}</p></td td><>成功调用此方法的有效状态不会更改状态。 以无效状态调用此方法会将对象传输到 <em>Error</em> 状态。 </p></td></tr><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><tr><td>setAudioSessionId </p></td><td>{Idle}</p></td td td><{Initialized>, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error}</p></td td td><>: 必须在调用 setDataSource 之前以空闲状态调用此方法,因为必须知道音频会话 ID。 调用它不会更改对象状态。 </p></td></tr><tr><td>setAudioStreamType (已弃用)</p></td td>><{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}</p></td<>td td>{Error}</p></td td><>成功调用此方法不会更改状态。 为了使目标音频流类型生效,必须在 prepare() 或 prepareAsync()之前调用此方法。</p></td></tr><tr><td>setAuxEffectSendLevel </p></td><td td>any</p></td><td td<>{}<><>> 调用此方法不会更改对象状态。 </p></td></tr><tr><td>setDataSource </p></td td>><{Idle}</p></td td><>{Initialized, Prepared, Started, Paused, Stopped, Stopped, PlaybackCompleted, Error}</p></td td<>>成功调用此方法的有效状态将对象传输到 <em>Initialized</em> 状态。 在无效状态下调用此方法将引发 IllegalStateException。</p></td></tr><tr><td>setDisplay </p/td td>><any </p><></td><td>{}</p></td><td td>此方法可以在任何状态下调用,并且调用此方法不会更改对象状态。 </p></td></tr><tr><td>setSurface </p/td td>><any </p><></td><td>{}</p></td 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 td>{Error}</p><></td><td Td><>成功调用此方法的有效状态不会更改状态。 以无效状态调用此方法会将对象传输到 <em>Error</em> 状态。</p></td/tr><tr><td>>< isLooping </p/td td>><any </p><></td><td>{}</p></td td td><>此方法可以在任何状态下调用,并且调用此方法不会更改对象状态。 </p></td></tr><tr><td>setOnBufferingUpdateListener </p/td td>><any </p><></td><td td>{}</p></td><td td>此方法可以在任何状态下调用,并且调用此方法不会更改对象状态。 </p></td></tr><tr><td>setOnCompletionListener </p></td td><>any </p></td><td td><<>{}<>> 此方法可以在任何状态下调用,并且调用此方法不会更改对象状态。 </p></td></tr><tr><td>setOnErrorListener </p></td td><>any </p></td><td td><<>{}<>> 此方法可以在任何状态下调用,并且调用此方法不会更改对象状态。 </p></td></tr><tr><td>setOnPreparedListener </p></td td><>any </p></td><td td><<>{}<>> 此方法可以在任何状态下调用,并且调用此方法不会更改对象状态。 </p></td></tr><tr><td>setOnSeekCompleteListener </p/td td>><any </p><></td><td td>{}</p></td><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>any </p></td><td>{}</p></td 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><>成功调用此方法不会更改状态。 <tr><td>setWakeMode </p/td td<>td>any </p><></td<>td td>{}<><><> 此方法可以在任何状态下调用,并且调用此方法不会更改对象状态。</p></td></tr><tr><td>start </p></td><td{Prepared, Started, Paused>, PlaybackCompleted}</p></td><td td>{Idle, Initialized, Stopped, Error}</p></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><>成功调用此方法,处于有效状态将对象传输到 <em>Stopped</em> 状态。 以无效状态调用此方法会将对象传输到 <em>Error</em> 状态。</p></td></tr><tr><td>getTrackInfo </p></td><td>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td><td td>{Idle, Initialized, Error}</p></td td>><成功调用此方法不会更改状态。</p></td/tr><tr><td>>< addTimedTextSource </p></td><td>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td<>td{Idle, Initialized>, Error}</p></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>><成功调用此方法不会更改状态。</p></td></tr><tr><td>deselectTrack </p></td><td>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td><td td>{Idle, Initialized, Error}</p></td td td Td>><成功调用此方法不会更改状态。</p></td></tr>

</桌子>

“权限”><h3>权限</h3>

可能需要声明相应的WAKE_LOCK权限 android.R.styleable#AndroidManifestUsesPermission &lt;uses-permission&gt; 元素。

此类在与基于网络的内容一起使用时需要 android.Manifest.permission#INTERNET 权限。

“Callbacks”><h3>Callbacks</h3>

应用程序可能需要注册信息性事件和错误事件,以便在播放或流式处理期间通知一些内部状态更新和可能的运行时错误。 通过正确设置相应的侦听器(通过调用#setOnPreparedListener(OnPreparedListener) setOnPreparedListener、、、#setOnSeekCompleteListener(OnSeekCompleteListener) setOnSeekCompleteListener#setOnCompletionListener(OnCompletionListener) setOnCompletionListener#setOnVideoSizeChangedListener(OnVideoSizeChangedListener) setOnVideoSizeChangedListener#setOnBufferingUpdateListener(OnBufferingUpdateListener) setOnBufferingUpdateListener#setOnInfoListener(OnInfoListener) setOnInfoListener、等#setOnErrorListener(OnErrorListener) setOnErrorListener)来注册这些事件。 为了接收与这些侦听器关联的相应回调,应用程序需要在线程上创建 MediaPlayer 对象,其自己的 Looper 运行(默认情况下,主 UI 线程具有循环器运行)。

适用于 . 的 android.media.MediaPlayerJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

MediaPlayer()

默认构造函数。

MediaPlayer(Context)

具有上下文的默认构造函数。

MediaPlayer(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

字段

MediaErrorIo
已过时.

MediaPlayer 类可用于控制音频/视频文件和流的播放。

MediaErrorMalformed
已过时.

MediaPlayer 类可用于控制音频/视频文件和流的播放。

MediaErrorTimedOut
已过时.

MediaPlayer 类可用于控制音频/视频文件和流的播放。

MediaErrorUnsupported
已过时.

MediaPlayer 类可用于控制音频/视频文件和流的播放。

MediaMimetypeTextSubrip

SubRip (SRT) 容器的 MIME 类型。

VideoScalingModeScaleToFit
已过时.

指定视频缩放模式。

VideoScalingModeScaleToFitWithCropping
已过时.

指定视频缩放模式。

属性

AudioSessionId

返回音频会话 ID。 - 或 - 设置音频会话 ID。

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)

为给定的资源 ID 创建 MediaPlayer 的便利方法。

Create(Context, Int32, AudioAttributes, Int32)

与相同的工厂方法 #create(Context, int) ,但允许你指定要由新的 MediaPlayer 实例使用的音频属性和会话 ID。

Create(Context, Uri)

为给定 URI 创建 MediaPlayer 的便利方法。

Create(Context, Uri, ISurfaceHolder)

为给定 URI 创建 MediaPlayer 的便利方法。

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

与相同的工厂方法 #create(Context, Uri, SurfaceHolder) ,但允许你指定要由新的 MediaPlayer 实例使用的音频属性和会话 ID。

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 通知/em> 或 <em>interrupted</em>。<><

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</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 类可用于控制音频/视频文件和流的播放。

适用于