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 对象的生命周期。 <>调用><后#reset(),新构造的 MediaPlayer 对象与 MediaPlayer 对象之间存在细微但重要的区别。 在这两种情况下,在 em Idle/em> 状态中<调用方法(如 #getVideoWidth()#getDuration()#getVideoHeight()#setAudioAttributes(AudioAttributes)#getCurrentPosition()#setLooping(boolean)#setVolume(float, float)#prepare()#seekTo(long, int)#stop()#start()#pause()、 或 #prepareAsync() )是一个编程错误。<> 如果在构造 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 () 方法。 <>请务必><注意,一旦发生错误,MediaPlayer 对象将进入 <>em Error</em> 状态 (,除非) 如上所述,即使应用程序尚未注册错误侦听器。</li>li 为了重用处于><错误/>em< 状态并从错误中恢复的 MediaPlayer 对象,#reset()可以调用 以将对象还原到其><空闲/em>< 状态。<></li><li>让应用程序注册 OnErrorListener 以查找来自内部播放器引擎的错误通知是一个很好的编程做法。<引发 /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> 状态。 <ul><li>如果在任何其他状态下调用 setDataSource () ,则会引发 IllegalStateException。</li><li>这是一个很好的编程做法,始终要从IllegalArgumentException重载setDataSource的方法中查找 和 IOException 。</li></ul></li><li>MediaPlayer 对象必须先进入 <em>Prepared</em> 状态,然后才能开始播放。 <ul><li>有两种方法 (同步和异步) <,可以达到 em>Prepared</em> 状态:对 (同步) 的调用 #prepare() ,在方法调用返回后将 <对象传输到 em>Prepared</em> 状态,或调用 #prepareAsync() (异步) 首先将对象 <传输到 em>Prepared</em> 调用后的状态返回 (,这几乎立即) 发生,而内部玩家引擎继续处理其余的准备工作,直到准备工作完成。 当准备完成或调用返回时#prepare(),如果通过 预先#setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)注册 OnPreparedListener,则内部播放器引擎会调用用户提供的回调方法 OnPrepared () OnPreparedListener 接口。</li><li>请务必注意<,em>Preparing</em> 状态是暂时性状态,当 MediaPlayer 对象处于>< em Preparing</em> 状态时调用任何具有副作用的方法的行为未定义。</li><li>如果在#prepare()任何其他状态下调用 或 #prepareAsync() ,则引发 IllegalStateException。</li><li>在 <em>Prepared</em> 状态下,可以通过调用相应的 set 方法调整属性,如 audio/sound volume、screenOnWhilePlaying、循环。</li></ul></li><li>若要开始播放,#start()必须调用 。 成功返回后 #start() ,MediaPlayer 对象将处于 <em>Started</em> 状态。 #isPlaying()可以调用 以测试 MediaPlayer 对象是否处于<启动></em> 状态。 <ul><li>在 em>Started</em> 状态中<,如果已通过 #setOnBufferingUpdateListener(OnBufferingUpdateListener)预先注册 OnBufferingUpdateListener,则内部玩家引擎会调用用户提供的 OnBufferingUpdateListener.onBufferingUpdate () 回调方法。 此回调允许应用程序在流式传输音频/视频时跟踪缓冲状态。</li><li>调用#start()对已处于启动<>/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>Calling #pause() 对已处于暂停</>em 状态的 <>MediaPlayer 对象没有影响。</li></ul></li><li>呼叫#stop()停止播放,并导致处于 <em>Started</em、em>> Paused</em>、<<em>Prepared </em> 或 <em>PlaybackCompleted</em> 状态的 <MediaPlayer 进入 em>Stopped</em> 状态。 <ul><li>进入<>停止</em> 状态后,在调用 或 #prepareAsync() 再次将 MediaPlayer 对象<设置为 Em>Prepared</em> 状态之前#prepare(),无法启动播放。</li><li>Calling #stop() 对已处于停止<>/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#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><td>><getAudioSessionId </p></td td>><any </p></td><td td>{}</p></td td><>可在任何状态下调用此方法,调用此方法不会更改对象状态。 </p></td></tr>><<td>getCurrentPosition </p></td><td>{Idle、Initialized、Prepared、Started、Paused、Stopped、PlaybackCompleted}</p></td td>><{Error}</p></td td><>在有效状态下成功调用此方法不会更改状态。 在无效状态下调用此方法会将对象转移到 <>Em Error</em> 状态。 </p></td></tr><td><>getDuration </p></td><td>{Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></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>{Error}</p></td td><>在有效状态下成功调用此方法不会更改状态。 在无效状态下调用此方法会将对象转移到 <>Em Error</em> 状态。 </p></td></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><><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<>>之后#release(),不得与对象交互。 </p></td></tr><td><>reset </p></td td<>>{Idle、Initialized、Prepared、Started、Paused、Stopped、PlaybackCompleted、Error}</p></td><td>{}</p></td><td>之后#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>{Error}</p></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><>必须在空闲状态下调用,因为音频会话 ID 在调用 setDataSource 之前必须已知。 调用它不会更改对象状态。 </p></td></tr><td>><setAudioStreamType (弃用) </p></td td><>{Idle、Initialized、Stopped、Prepared、Started、Paused、PlaybackCompleted}</p></td td>><{Error}</p></td td><>成功调用此方法不会更改状态。 为了使目标音频流类型生效,必须在 prepare () 或 prepareAsync () 之前调用此方法。</p></td></tr><><td>setAuxEffectSendLevel </p></td td><>any</p></td td><td>{}</p></td td><>调用此方法不会更改对象状态。 </p></td></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 td>><any </p></td td<>td>{}</p></td td td><>可在任何状态下调用此方法,调用此方法不会更改对象状态。 </p></td></tr><td>><setSurface </p></td td>><any </p></td td<>td>{}</p></td td td><>可在任何状态下调用此方法,调用此方法不会更改对象状态。 </p></td></tr><><td>setVideoScalingMode </p></td><td>{Initialized、Prepared、Started、Paused、Stopped、PlaybackCompleted}</p></td td<>>{Idle, Error}</p></td<>td>成功调用此方法不会更改状态。</p></td></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><>any </p></td td><>{}</p></td td td><>可在任何状态下调用此方法,调用此方法不会更改对象状态。 </p></td></tr><><td>setOnBufferingUpdateListener </p></td td>><any </p></td td<>td>{}</p></td td td><>可在任何状态下调用此方法,调用此方法不会更改对象状态。 </p></td></tr><><td>setOnCompletionListener </p></td td><>any </p></td td><td>{}</p></td td><td>可在任何状态下调用此方法,调用此方法不会更改对象状态。 </p></td></tr><><td>setOnErrorListener </p></td td><>any </p></td td><td>{}</p></td td><td>可在任何状态下调用此方法,调用此方法不会更改对象状态。 </p></td></tr><><td>setOnPreparedListener </p></td td>><any </p></td td<>td>{}</p></td td td><>可在任何状态下调用此方法,调用此方法不会更改对象状态。 </p></td></tr><><td>setOnSeekCompleteListener </p></td td><>any </p></td 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><>any </p></td td><td>{}</p></td td><td>可在任何状态下调用此方法,调用此方法不会更改对象状态。 </p></td></tr><td><>setVolume </p></td<>td>{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}</p></td<>td>{Error}</p></td td><>成功调用此方法不会更改状态。 <tr><td>setWakeMode </p></td td><>any </p></td><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><><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><><td>getTrackInfo </p></td<>td>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td<>td>{Idle, Initialized, Error}</p></td td<>td>成功调用此方法不会更改状态。</p></td></tr>><<td>addTimedTextSource </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td><>{Idle, Initialized, Error}</p></td td<>td>成功调用此方法不会更改状态。</p></td></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 permission android.R.styleable#AndroidManifestUsesPermission &lt;uses-permission&gt; 元素。

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

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

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

android.media.MediaPlayerJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

MediaPlayer()

默认构造函数。

MediaPlayer(Context)

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

MediaPlayer(IntPtr, JniHandleOwnership)

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

字段

MediaErrorIo
已过时.

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

MediaErrorMalformed
已过时.

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

MediaErrorTimedOut
已过时.

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

MediaErrorUnsupported
已过时.

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

MediaMimetypeTextSubrip

子Rip (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)#setOnSubtitleDataListener(OnSubtitleDataListener, Handler)设置的侦听器。

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()的数组中的索引,可用于对 或 #deselectTrack(int)#selectTrack(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 类可用于控制音频/视频文件和流的播放。

适用于