다음을 통해 공유


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 및 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 상태 다이어그램" border="0" />

이 상태 다이어그램에서 MediaPlayer 개체에 다음 상태가 있음을 확인할 수 있습니다.

<ul>li MediaPlayer 개체를 방금 사용 new 하거나 호출<한 후에 #reset() 만들면 em>Idle</em> 상태가 되며 호출된 후에 #release() 는 <em>End</em> 상태에 있습니다.>< 이 두 상태 사이에 MediaPlayer 개체의 수명 주기가 있습니다. <ul><li>새로 생성된 MediaPlayer 개체와 호출된 후 #reset() MediaPlayer 개체 간에는 미묘하지만 중요한 차이점이 있습니다. 두 경우 모두에 대해 , ,, , #prepare()#pause()#getVideoHeight()#setVolume(float, float)#getVideoWidth()#setLooping(boolean)#seekTo(long, int)#stop()#start()#setAudioAttributes(AudioAttributes)또는 <#prepareAsync() em>유휴</em> 상태와 같은 #getCurrentPosition()메서드를 호출하는 것은 프로그래밍 오류입니다. #getDuration() 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>일반적으로 지원되지 않는 오디오/비디오 형식, 제대로 인터리브되지 않은 오디오/비디오, 해상도가 너무 높음, 스트리밍 시간 제한 등과 같은 다양한 이유로 인해 일부 재생 제어 작업이 실패할 수 있습니다. 따라서 이러한 상황에서 오류 보고 및 복구는 중요한 문제입니다. 경우에 따라 프로그래밍 오류로 인해 잘못된 상태에서 재생 컨트롤 작업을 호출할 수도 있습니다. 이러한 모든 오류 조건에서 내부 플레이어 엔진은 OnErrorListener가 사전에 #setOnErrorListener(android.media.MediaPlayer.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()과 같은 프로그래밍 오류 또는 잘못된 상태의 오버로드된 메서드 중 하나를 방지하기 위해 throw됩니다.setDataSource </li></ul></li li>><Calling #setDataSource(FileDescriptor)또는 #setDataSource(String)또는 #setDataSource(Context, Uri), 또는 #setDataSource(FileDescriptor, long, long)또는 em #setDataSource(MediaDataSource) Idle</em> 상태의 <MediaPlayer 개체를 em>>Initialized</em> 상태로 <전송합니다. <setDataSource()가 다른 상태에서 호출되면 ul><li>IllegalStateException이 throw됩니다.</li li>><항상 찾는 IllegalArgumentException 것이 좋은 프로그래밍 연습이며 IOException 오버로드된 setDataSource 메서드에서 throw될 수 있습니다.<재생을 시작하려면 먼저 /li></ul<>/li li><>A MediaPlayer 개체가 em>Prepared</em> 상태를 입력<해야 합니다. <ul>li em Prepared/em> 상태에 도달할 수 있는 <두 가지 방법(동기 및 비동기)이 있습니다. 즉, 메서드 호출이 반환되면 개체<를 #prepare() em>Prepared</em> 상태로 전송하는 호출(동기)이나 #prepareAsync() 개체<>를 em Prepareding/em>으로 먼저 전송하는< 호출(비동기)입니다.<>>< 내부 플레이어 엔진이 준비 작업이 완료될 때까지 나머지 준비 작업을 계속하는 동안 호출이 반환된 후의 상태(거의 즉시 발생)입니다. 준비가 완료되거나 호출이 반환될 때 #prepare() 내부 플레이어 엔진은 OnPreparedListener가 미리 #setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)등록된 경우 OnPreparedListener 인터페이스의 onPrepared() 사용자 제공 콜백 메서드를 호출합니다.</li><li>Em Preparing/em 상태는 일시적인 상태이며 MediaPlayer 개체가>< em>Preparing</em>> 상태에 있는 동안 부작용이 있는 메서드를 호출하는< 동작은 <정의되지 않습니다.</li li><>IllegalStateException은 다른 상태에서 호출되거나 #prepareAsync() 호출되는 경우 #prepare() throw됩니다.</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> 상태에서 내부 플레이어 엔진은 OnBufferingUpdateListener가 미리 #setOnBufferingUpdateListener(OnBufferingUpdateListener)등록된 경우 사용자가 제공한 OnBufferingUpdateListener.onBufferingUpdate() 콜백 메서드를 호출합니다. 이 콜백을 사용하면 애플리케이션이 오디오/비디오를 스트리밍하는 동안 버퍼링 상태를 추적할 수 있습니다.</li li>><Calling #start() 은 em Started</em> 상태에 이미 있는 MediaPlayer 개체에 <>영향을 주지 않습니다.</li>/ul<>/li li><>재생을 일시 중지하고 중지할 수 있으며 현재 재생 위치를 조정할 수 있습니다.< 를 통해 #pause()재생을 일시 중지할 수 있습니다. 반환 호출 #pause() 이 반환되면 MediaPlayer 개체가 <em>Paused</em> 상태로 들어갑니다. em Started</em 상태에서 em>Paused</em>> 상태로 <전환하고 그 반대로 전환<하면 플레이어 엔진에서 비동기적으로 발생>합니다. 호출 #isPlaying()시 상태가 업데이트되기까지 다소 시간이 걸릴 수 있으며 스트리밍된 콘텐츠의 경우 몇 초 정도 걸릴 수 있습니다. <일시 중지된 MediaPlayer 개체에 대한 재생을 다시 시작하는 ul><li>호출 #start() 이며 다시 시작된 재생 위치는 일시 중지된 위치와 동일합니다. 호출 #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> 상태의 MediaPlayer<가 em>Stopped</em> 상태로 전환<되도록 합니다. <ul>li 한 번 <em>Stopped</em 상태에서 MediaPlayer 개체<를 em>Prepared</em>> 상태로 다시 설정하기 위해 호출될 때까지 #prepare()#prepareAsync() 재생을 시작할 수 없습니다.<></li li><>Calling #stop() 은 이미 em>Stopped</em> 상태인 MediaPlayer 개체에 <영향을 주지 않습니다.</li></ul></li li><>재생 위치는 호출#seekTo(long, int)을 통해 조정할 수 있습니다. <ul><li>비동 #seekTo(long, int) 기 호출은 즉시 반환되지만 실제 검색 작업은 완료하는 데 시간이 걸릴 수 있습니다( 특히 스트리밍되는 오디오/비디오의 경우). 실제 검색 작업이 완료되면 내부 플레이어 엔진은 OnSeekCompleteListener가 미리 #setOnSeekCompleteListener(OnSeekCompleteListener)등록된 경우 사용자가 제공한 OnSeekComplete.onSeekComplete()를 호출합니다.</li li>>#seekTo(long, int)<는 em Prepared</em, em>>Paused</em>>< 및 em>PlaybackCompleted </em> 상태와 <같은 <다른 상태에서도 호출할 수 있습니다. #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>로 <설정된 경우 플레이어 엔진은 OnCompletionListener를 통해 #setOnCompletionListener(OnCompletionListener)미리 등록된 경우 사용자가 제공한 콜백 메서드인 OnCompletion.onCompletion()을 호출합니다. 콜백 호출은 개체가 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<>>Valid States </p></td td<>>Invalid States </p></td td<>>Comments </p></td></tr tr><><td>attachAuxEffect </p></td td><>{Initialized, 준비됨, 시작됨, 일시 중지됨, 중지됨, PlaybackCompleted}</p></td<>td>{유휴, Error}</p/><< td td><>이 메서드는 setDataSource 후에 호출되어야 합니다. 호출해도 개체 상태는 변경되지 않습니다. </p></td></tr tr><<>td>getAudioSessionId </p></td td><>any </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><>{Error}</p></td td>><Successful invoke of this method in a valid state. 이 메서드를 잘못된 상태로 호출하면 개체 <가 em>Error</em> 상태로 전송됩니다. </p></td></tr tr><><td>getDuration </p></td td>><{Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td>><successful invoke of this method in a valid state. 이 메서드를 잘못된 상태로 호출하면 개체 <가 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>><Successful invoke of this method in a valid state. 이 메서드를 잘못된 상태로 호출하면 개체 <가 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>><Successful invoke of this method in a valid state. 이 메서드를 잘못된 상태로 호출하면 개체 <가 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>><Successful invoke of this method in a valid state. 이 메서드를 잘못된 상태로 호출하면 개체 <가 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>><Successful invoke of this method in a valid state <to em>Paused</em> state. 이 메서드를 잘못된 상태로 호출하면 개체<가 em>Error</em> 상태로 전송됩니다.</p></td></tr tr><<>td>prepare </p></td td><>{Initialized, Stopped}</p></td td>><{Idle, Prepared, Started, Paused, PlaybackCompleted, Error}</p></td td>><Successful invoke of this method in a valid state <in the em>Prepared</em> state. 이 메서드를 잘못된 상태로 호출하면 IllegalStateException이 throw됩니다.</p></td></tr tr><<>td>prepareAsync </p></td td><>{Initialized, Stopped}</p></td td>><{Idle, Prepared, Started, Paused, PlaybackCompleted, Error}</p></td td>><successful invoke of this method in a valid state <in the em>Prepareing</em> state. 이 메서드를 잘못된 상태로 호출하면 IllegalStateException이 throw됩니다.</p></td></tr tr><<>td>release </p></td td>><any </p></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><>{}</p></td td>><After#reset(), 개체는 방금 만들어지는 것과 같습니다.</p></td></tr tr><<>td>seekTo </p></td td>><{Prepared, Started, Paused, PlaybackCompleted}</p></td td><>{Idle, Initialized, Stopped, Error}</p></td td>><Successful invoke of this method in a valid state. 이 메서드를 잘못된 상태로 호출하면 개체 <가 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>><Successful invoke of this method는 상태를 변경하지 않습니다. 대상 오디오 특성 형식이 적용되려면 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>><이 메서드는 setDataSource를 호출하기 전에 오디오 세션 ID를 알려야 하므로 유휴 상태에서 호출되어야 합니다. 호출해도 개체 상태는 변경되지 않습니다. </p></td></tr tr><td>><setAudioStreamType(사용되지 않음)</p></td td>><{유휴, 초기화됨, 중지됨, 준비됨, 시작됨, 일시 중지됨, PlaybackCompleted}</p></td td>><{Error}</p></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><>successful invoke of this method in a valid state in the em>Initialized</em> 상태로 개체<를 전송합니다. 이 메서드를 잘못된 상태로 호출하면 IllegalStateException이 throw됩니다.</p></td></tr 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>><{Idle, Error}</p></td td>><Successful invoke of this method의 상태를 변경하지 않습니다.</p></td></tr tr><td>><setLooping </p></td td>><{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}</p></td td><>{Error}</p></td td>><Successful invoke of this method in a valid state. 이 메서드를 잘못된 상태로 호출하면 개체<가 em>Error</em> 상태로 전송됩니다.</p></td></tr tr><<>td>isLooping </p></td td><>any </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><>any </p></td td>{}<<>/p></td td>><이 메서드는 모든 상태에서 호출할 수 있으며 호출하면 개체 상태가 변경되지 않습니다. </p></td></tr tr><<>td>setOnErrorListener </p></td td><>any </p></td td>{}<<>/p></td td>><이 메서드는 모든 상태에서 호출할 수 있으며 호출하면 개체 상태가 변경되지 않습니다. </p></td></tr tr><<>td>setOnPreparedListener </p></td td><>any </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>><이 메서드는 호출 시기에 따라 경우에 따라 상태를 변경합니다. </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><>{Error}</p></td td>><이 메서드의 성공적인 호출은 상태를 변경하지 않습니다. <tr><td>setWakeMode </p></td td>><any </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>><Successful invoke of this method in a valid state <in the em>Started</em> state. 이 메서드를 잘못된 상태로 호출하면 개체<가 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>><Successful invoke of this method in a valid state <in the em>Stopped</em> state. 이 메서드를 잘못된 상태로 호출하면 개체<가 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>><Successful invoke of this method는 상태를 변경하지 않습니다.</p></td></tr tr><<>td>addTimedTextSource </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td>><Successful invoke of this method는 상태를 변경하지 않습니다.</p></td></tr tr><<>td>selectTrack </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td>><Successful invoke of this method는 상태를 변경하지 않습니다.</p></td></tr tr tr><><td>deselectTrack </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td><>{Idle, Initialized, Error}</p></td td<>>Successful invoke of this method는 상태를 변경하지 않습니다.</p></td></tr>

</테이블>

"Permissions"><h3>Permissions</h3>

해당 WAKE_LOCK 권한 android.R.styleable#AndroidManifestUsesPermission &lt;uses-permission&gt; 요소를 선언해야 할 수도 있습니다.

이 클래스는 android.Manifest.permission#INTERNET 네트워크 기반 콘텐츠와 함께 사용할 때 사용 권한이 필요합니다.

"콜백"><h3>콜백</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 스레드에는 기본적으로 Looper가 실행 중임).

에 대한 android.media.MediaPlayerJava 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

생성자

MediaPlayer()

기본 생성자입니다.

MediaPlayer(Context)

컨텍스트가 있는 기본 생성자입니다.

MediaPlayer(IntPtr, JniHandleOwnership)

JNI 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

필드

MediaErrorIo
사용되지 않음.

MediaPlayer 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다.

MediaErrorMalformed
사용되지 않음.

MediaPlayer 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다.

MediaErrorTimedOut
사용되지 않음.

MediaPlayer 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다.

MediaErrorUnsupported
사용되지 않음.

MediaPlayer 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다.

MediaMimetypeTextSubrip

SRT(SubRip) 컨테이너에 대한 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는 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, 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 엔진 플러그 인 문자열 속성 값을 읽습니다.

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 엔진 플러그 인 문자열 속성 값을 설정합니다.

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)

이 MediaPlayer에서 출력을 AudioDeviceInfo 라우팅할 오디오 디바이스(개체를 통해)를 지정합니다.

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()

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 <><중단/종료>합니다.>

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다.

(다음에서 상속됨 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 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다.

적용 대상