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 개체가 호출된 후 #reset()
또는 를 사용하여 new
만들어진 경우 이 개체는 <em>Idle</em> 상태이고 가 호출된 후에 #release()
는 <em>End</em> 상태입니다.>< 이러한 두 상태 사이에는 MediaPlayer 개체의 수명 주기가 있습니다. <ul><li>가 호출된 후 #reset()
새로 생성된 MediaPlayer 개체와 MediaPlayer 개체 간에는 미묘하지만 중요한 차이점이 있습니다. 두 경우 모두에 대해 , , , , , #prepare()
#pause()
#getVideoHeight()
#setVolume(float, float)
#getVideoWidth()
#setLooping(boolean)
#stop()
#setAudioAttributes(AudioAttributes)
#start()
#seekTo(long, int)
또는 #prepareAsync()
<em>유휴</em> 상태와 같은 #getCurrentPosition()
메서드를 호출하는 것은 프로그래밍 오류입니다. #getDuration()
MediaPlayer 개체가 생성된 직후 이러한 메서드가 호출되면 사용자가 제공한 콜백 메서드 OnErrorListener.onError()는 내부 플레이어 엔진에서 호출되지 않으며 개체 상태는 변경되지 않습니다. 그러나 이러한 메서드가 바로 다음에 #reset()
호출되면 사용자가 제공한 콜백 메서드 OnErrorListener.onError()가 내부 플레이어 엔진에 의해 호출되고 개체가 em>Error</em> 상태로 전송<됩니다. </li li><>MediaPlayer instance 대한 참조를 유지하여 가비지 수집을 방지해야 합니다. MediaPlayer instance 가비지 수집되면 #release
가비지 가 호출되어 진행 중인 재생이 중지됩니다. <li>메모리 및 코덱과 같은 획득된 리소스를 해제하기 위해 instance 사용을 완료한 후에는 를 호출 #release()
해야 합니다. 를 호출#release
한 후에는 릴리스된 instance 더 이상 상호 작용하지 않아야 합니다. <를 사용하여 만든 li>MediaPlayer 개체는 <em>Idle</em> 상태이고, 오버로드된 편리한 create
메서드 중 하나를 사용하여 만든 개체는 em>Idle</em 상태의 <em>NOT</em>>입니다<.new
실제로 메서드를 사용하여 create
만드는 데 성공하면 개체<가 em>Prepared</em> 상태에 있습니다. </li></ul></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은 , #prepareAsync()
또는 오버로드된 메서드 중 하나를 잘못된 상태로 호출#prepare()
하는 것과 같은 프로그래밍 오류를 방지하기 위해 throw됩니다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>IllegalStateException이 throw됩니다.</li li><>항상 찾 IllegalArgumentException
도록 하는 것이 좋은 프로그래밍 사례이며 IOException
오버로드된 setDataSource
메서드에서 throw될 수 있습니다.</li></ul<>/li li>><MediaPlayer 개체는 재생을 <시작하기 전에 먼저 em>Prepared</em> 상태를 입력해야 합니다. <ul>li em Prepared/em> 상태에 도달할 수 있는 <두 가지 방법(동기 및 비동기)이 있습니다. 즉, 메서드 호출 #prepare()
이 반환되면 개체<를 em>Prepared</em> 상태로 전송하는 (동기) 호출 또는 먼저 개체<를 em>Prepareding/em>으로 전송하는< (비동기) 호출 #prepareAsync()
입니다.<>>< 내부 플레이어 엔진이 준비 작업이 완료될 때까지 나머지 준비 작업을 계속하는 동안 호출이 반환된 후 상태(거의 즉시 발생). 준비가 완료되거나 호출이 #prepare()
반환되면 내부 플레이어 엔진은 OnPreparedListener 인터페이스의 onPrepared() 사용자 제공 콜백 메서드를 호출합니다( OnPreparedListener가 를 통해 #setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)
미리 등록된 경우).</li li>><em>Preparing/em 상태는 일시적인 상태이며 MediaPlayer 개체가 <em>Preparing</em>> 상태에 있는 동안 부작용이 있는 메서드를 호출하는 동작은 <정의되지 않음을 유의해야< 합니다.</li li><>또는 #prepareAsync()
가 다른 상태에서 호출되면 #prepare()
IllegalStateException이 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()
에서 상태가 업데이트되기까지 다소 시간이 걸릴 수 있으며 스트리밍된 콘텐츠의 경우 몇 초가 걸릴 수 있습니다. <ul><li>일시 중지된 MediaPlayer 개체에 대한 재생을 다시 시작하려면 호출 #start()
하고 다시 시작된 재생 위치는 일시 중지된 위치와 동일합니다. 에 대한 #start()
호출이 반환되면 일시 중지된 MediaPlayer 개체가 <em>Started</em> 상태로 돌아갑니다.</li li><>Calling #pause()
은 이미 em>Paused</em> 상태에 있는 MediaPlayer 개체에 <영향을 주지 않습니다.</li></ul></li<>li>Calling은 #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>> 상태로 다시 설정하기 위해 또는 #prepareAsync()
가 호출될 때까지 #prepare()
재생을 <시작할 수 없습니다.<>></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>로 <설정된 경우 플레이어 엔진은 사용자가 제공한 콜백 메서드 OnCompletion.onCompletion()을 호출합니다( OnCompletionListener가 를 통해 #setOnCompletionListener(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<>>Comments </p><></td></tr tr><><td>attachAuxEffect </p></td td<>>{Initialized, 준비됨, 시작됨, 일시 중지됨, 중지됨, 재생Completed}</p></td td><>{Idle, 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>><유효한 상태에서 이 메서드를 성공적으로 호출해도 상태가 변경되지 않습니다. 이 메서드를 잘못된 상태로 호출하면 개체 <가 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>><유효한 상태에서 이 메서드를 성공적으로 호출해도 상태가 변경되지 않습니다. 이 메서드를 잘못된 상태로 호출하면 개체 <가 em>Error</em> 상태로 전송됩니다. </p></td></tr tr><<>td>getVideoHeight </p></td td>><{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td><>{Error}</p></td td>><유효한 상태에서 이 메서드를 성공적으로 호출해도 상태가 변경되지 않습니다. 이 메서드를 잘못된 상태로 호출하면 개체 <가 em>Error</em> 상태로 전송됩니다. </p></td></tr tr><<>td>getVideoWidth </p></td td>><{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td><>{Error}</p></td td>><유효한 상태에서 이 메서드를 성공적으로 호출해도 상태가 변경되지 않습니다. 이 메서드를 잘못된 상태로 호출하면 개체 <가 em>Error</em> 상태로 전송됩니다. </p></td></tr tr><><td>isPlaying </p></td td>><{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td<>td>{Error}</p></td td><>유효한 상태에서 이 메서드를 성공적으로 호출해도 상태가 변경되지 않습니다. 이 메서드를 잘못된 상태로 호출하면 개체 <가 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>><올바른 상태에서 이 메서드를 성공적으로 호출하면 개체<가 em>Paused</em> 상태로 전송됩니다. 이 메서드를 잘못된 상태로 호출하면 개체<가 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>><올바른 상태에서 이 메서드를 성공적으로 호출하면 개체<가 em>Prepared</em> 상태로 전송됩니다. 잘못된 상태에서 이 메서드를 호출하면 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>><유효한 상태에서 이 메서드를 성공적으로 호출하면 개체<가 em>Prepareing</em> 상태로 전송됩니다. 잘못된 상태에서 이 메서드를 호출하면 IllegalStateException이 throw됩니다.</p></td></tr tr><<>td>release </p></td td>><any </p></td><td>{}</p></td td>><After #release()
, 개체와 상호 작용하면 안 됩니다. </p></td></tr tr><><td>reset </p></td td><>{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error}</p></td td>{}<></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>><유효한 상태에서 이 메서드를 성공적으로 호출해도 상태가 변경되지 않습니다. 이 메서드를 잘못된 상태로 호출하면 개체 <가 em>Error</em> 상태로 전송됩니다. </p></td></tr tr><<>td>setAudioAttributes </p></td td>><{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}</p></td td><>{Error}</p></td td>><이 메서드를 성공적으로 호출해도 상태가 변경되지 않습니다. 대상 오디오 특성 형식이 적용되려면 prepare() 또는 prepareAsync() 전에 이 메서드를 호출해야 합니다.</p></td></tr tr><<>td>setAudioSessionId /p></td td>><{Idle}</p></td td><>{Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error}</p/td td setAudioSessionId</p></td><td>이 메서드는 setDataSource를 호출하기 전에 오디오 세션 ID를 알려야 하므로 유휴 상태에서 호출되어야 합니다. 호출해도 개체 상태는 변경되지 않습니다. </p></td></tr 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 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>><유효한 상태에서 이 메서드를 성공적으로 호출하면 개체<가 em>Initialized</em> 상태로 전송됩니다. 잘못된 상태에서 이 메서드를 호출하면 IllegalStateException이 throw됩니다.</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>><이 메서드는 모든 상태에서 호출할 수 있으며 호출하면 개체 상태가 변경되지 않습니다. </p></td></tr tr><<>td>setVideoScalingMode </p></td td>><{Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td>><{Idle, Error}</p></td td>><이 메서드를 성공적으로 호출해도 상태가 변경되지 않습니다.</p></td></tr tr><<>td>setLooping </p></td td>><{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}</p></td td><>{Error}</p></td td>><유효한 상태에서 이 메서드를 성공적으로 호출해도 상태가 변경되지 않습니다. 이 메서드를 잘못된 상태로 호출하면 개체<가 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 td>><any </p/td td<>{}<>/><p></td td><>이 메서드는 모든 상태에서 호출할 수 있으며 호출하면 개체 상태가 변경되지 않습니다. </p></td></tr tr><td>><setOnErrorListener </p></td 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 td><>이 메서드는 호출 시기에 따라 경우에 따라 상태를 변경합니다. </p></td></tr tr><<>td>setScreenOnWhilePlaying</></td td td><>any </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>><올바른 상태에서 이 메서드를 성공적으로 호출하면 개체<가 em>Started</em> 상태로 전송됩니다. 이 메서드를 잘못된 상태로 호출하면 개체<가 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>><올바른 상태에서 이 메서드를 성공적으로 호출하면 개체<가 em>Stopped</em> 상태로 전송됩니다. 이 메서드를 잘못된 상태로 호출하면 개체<가 em>Error</em> 상태로 전송됩니다.</p></td></tr tr><<>td>getTrackInfo </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td>><이 메서드의 성공적인 호출은 상태를 변경하지 않습니다.</p></td></tr tr><<>td>addTimedTextSource </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></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>><{Idle, Initialized, Error}</p></td td>><이 메서드의 성공적인 호출은 상태를 변경하지 않습니다.</p></td></tr tr><<>td>deselectTrack </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td>><이 메서드의 성공적인 호출은 상태를 변경하지 않습니다.</p></td></tr>
</테이블>
"Permissions"><h3>Permissions</h3>
해당 WAKE_LOCK 권한 android.R.styleable#AndroidManifestUsesPermission <uses-permission>
요소를 선언해야 할 수도 있습니다.
이 클래스는 android.Manifest.permission#INTERNET
네트워크 기반 콘텐츠와 함께 사용할 때 권한이 필요합니다.
"콜백"><h3>콜백</h3>
애플리케이션은 재생 또는 스트리밍 중에 일부 내부 상태 업데이트 및 가능한 런타임 오류를 알리기 위해 정보 및 오류 이벤트에 등록할 수 있습니다. 이러한 이벤트에 대한 등록은 적절한 수신기를 올바르게 설정하여 수행됩니다(#setOnPreparedListener(OnPreparedListener) setOnPreparedListener
, , #setOnBufferingUpdateListener(OnBufferingUpdateListener) setOnBufferingUpdateListener
#setOnErrorListener(OnErrorListener) setOnErrorListener
#setOnVideoSizeChangedListener(OnVideoSizeChangedListener) setOnVideoSizeChangedListener
#setOnSeekCompleteListener(OnSeekCompleteListener) setOnSeekCompleteListener
#setOnCompletionListener(OnCompletionListener) setOnCompletionListener
#setOnInfoListener(OnInfoListener) setOnInfoListener
등). 이러한 수신기와 연결된 각 콜백을 수신하려면 애플리케이션이 자체 Looper가 실행되는 스레드에서 MediaPlayer 개체를 만들어야 합니다(기본적으로 UI 스레드에는 루퍼가 실행 중임 기본).
에 대한 Java 설명서입니다 android.media.MediaPlayer
.
이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.
생성자
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 instance 대한 핸들입니다. (다음에서 상속됨 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 엔진 플러그 인 String 속성 값을 읽습니다. |
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 엔진 플러그 인 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) |
이 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() |
현재 스레드가 각성될 때까지 대기하도록 합니다. 일반적으로 <알림을<> 받>거나<<> 중단/em>합니다. (다음에서 상속됨 Object) |
Wait(Int64) |
현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다. (다음에서 상속됨 Object) |
Wait(Int64, Int32) |
현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>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 클래스를 사용하여 오디오/비디오 파일 및 스트림의 재생을 제어할 수 있습니다. |