MediaPlayer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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는 스레드로부터 안전하지 않습니다. 플레이어 인스턴스 생성 및 모든 액세스는 동일한 스레드에 있어야 합니다. 콜백을 등록하는 경우 스레드에 루퍼가 있어야 합니다.
여기서 다루는 항목은 다음과 같습니다. <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 <uses-permission>
요소를 선언해야 할 수도 있습니다.
이 클래스는 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.MediaPlayer
Java 설명서
이 페이지의 일부는 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 |
이 |
CurrentPosition |
현재 재생 위치를 가져옵니다. |
Duration |
파일의 기간을 가져옵니다. |
Handle |
기본 Android 인스턴스에 대한 핸들입니다. (다음에서 상속됨 Object) |
IsPlaying |
MediaPlayer가 재생 중인지 여부를 확인합니다. |
JniIdentityHashCode |
MediaPlayer 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다. (다음에서 상속됨 Object) |
JniPeerMembers |
MediaPlayer 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다. |
Looping |
MediaPlayer가 반복 중인지 아니면 반복이 아닌지 확인합니다. -또는- 플레이어를 반복 또는 비 루프로 설정합니다. |
Metrics |
현재 플레이어에 대한 메트릭 데이터를 반환합니다. |
PeerReference |
MediaPlayer 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다. (다음에서 상속됨 Object) |
PlaybackParams |
현재 재생 속도를 포함하는 재생 매개 변수를 가져옵니다. -또는- .를 사용하여 |
PreferredDevice |
에서 지정한 선택한 출력을 |
RoutedDevice |
|
SyncParams |
A/V 동기화 모드를 가져옵니다. -또는- A/V 동기화 모드를 설정합니다. |
ThresholdClass |
이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. |
ThresholdType |
이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. |
Timestamp |
현재 재생 위치를 .로 가져옵니다 |
VideoHeight |
비디오의 높이를 반환합니다. |
VideoWidth |
비디오의 너비를 반환합니다. |
메서드
AddOnRoutingChangedListener(IAudioRoutingOnRoutingChangedListener, Handler) |
|
AddTimedTextSource(Context, Uri, String) |
외부 시간 제한 텍스트 원본 파일(Uri)을 추가합니다. |
AddTimedTextSource(FileDescriptor, Int64, Int64, String) |
외부 시간 제한 텍스트 파일(FileDescriptor)을 추가합니다. |
AddTimedTextSource(FileDescriptor, String) |
외부 시간 제한 텍스트 원본 파일(FileDescriptor)을 추가합니다. |
AddTimedTextSource(String, String) |
외부 시간 제한 텍스트 원본 파일을 추가합니다. |
AttachAuxEffect(Int32) |
보조 효과를 플레이어에 연결합니다. |
ClearOnMediaTimeDiscontinuityListener() |
이전에 설정한 수신기를 지웁니다. |
ClearOnSubtitleDataListener() |
이전에 설정되었거나 |
Clone() |
이 개체의 복사본을 만들고 반환합니다. (다음에서 상속됨 Object) |
Create(Context, Int32) |
지정된 리소스 ID에 대한 MediaPlayer를 만드는 편리한 방법입니다. |
Create(Context, Int32, AudioAttributes, Int32) |
동일한 팩터리 메서드 |
Create(Context, Uri) |
지정된 Uri에 대한 MediaPlayer를 만드는 편리한 방법입니다. |
Create(Context, Uri, ISurfaceHolder) |
지정된 Uri에 대한 MediaPlayer를 만드는 편리한 방법입니다. |
Create(Context, Uri, ISurfaceHolder, AudioAttributes, Int32) |
동일한 팩터리 메서드 |
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() |
트랙 정보의 배열을 반환합니다. |
JavaFinalize() |
가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다. (다음에서 상속됨 Object) |
Notify() |
이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다. (다음에서 상속됨 Object) |
NotifyAll() |
이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다. (다음에서 상속됨 Object) |
Pause() |
재생을 일시 중지합니다. |
Prepare() |
플레이어의 재생을 동기적으로 준비합니다. |
PrepareAsync() |
플레이어를 비동기적으로 재생할 준비를 합니다. |
PrepareDrm(UUID) |
현재 원본에 대한 DRM 준비 |
ProvideKeyResponse(Byte[], Byte[]) |
앱에서 라이선스 서버에서 키 응답을 받은 다음 provideKeyResponse를 사용하여 DRM 엔진 플러그 인에 제공됩니다. |
Release() |
이 MediaPlayer 개체와 연결된 리소스를 해제합니다. |
ReleaseDrm() |
DRM 세션을 해제합니다. |
RemoveOnRoutingChangedListener(IAudioRoutingOnRoutingChangedListener) |
|
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) |
|
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에서 출력을 |
SetScreenOnWhilePlaying(Boolean) |
비디오 재생이 발생하는 동안 연결된 SurfaceHolder를 사용하여 화면을 계속 켜야 하는지 여부를 제어합니다. |
SetSurface(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 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다. |