안드로이드는 MediaPlayer를 통해 별도의 인코딩 없이 동영상을 감상할 수 있다.
MediaPlayer클래스는 오디오와 비디오를 모두 지원하며 다양한 소스 미디어를 재생 할 수 있다.
재생 가능한 미디어 소스
1. 실행 파일에 내장된 리소스
2. SD카드에 파일 형태로 저장된 미디어
3. 네트워크로 전송되는 스트림. 대용량의 음악이나 동영상을 즉시 감상
MediaPlayer 클래스 : http://developer.android.com/reference/android/media/MediaPlayer.html
재생할 미디어를 전달하는 방법은 두가지가 있다.
1. setDataSource() : [ http://developer.android.com/reference/android/media/MediaPlayer.html#setDataSource(java.lang.String) ] 참고
setDataSource 메소드를 이용하여 로컬 파일이나 Uri객체로부터 원격자의 미디어를 연다.
스트림을 열었다고 해서 바로 재생할 수 없다. 필요한 코덱을 찾고 원할한 재생을 위해 얼마간의 버퍼를 할당해야 한다.
대용량 스트림의 경우 상당한 시간이 걸릴 수 있으므로 스트림 오픈 직후 준비상태를 만들어주는 prepare() , preapreAsync() 메소드를 호출해야한다.
prepare() : 동기적으로 준비, 준비가 끝나면 리턴
prepareAsync() : 준비시간이 매우 오래걸린다면 비동기적으로 동작하는 메소드를 호출 -> 콜백을 통해 준비 완료를 통보받음
2. create() : [ http://developer.android.com/reference/android/media/MediaPlayer.html#create(android.content.Context, android.net.Uri, android.view.SurfaceHolder) ] 참고
다음 정적 메서드를 호출하면 객체 생성, 스트림 열기, 준비과정이 내부에서 수행된다.
단 create 메소드는 리소스나 스트림을 통해 열수 있지만, 파일은 열지 못한다.
미디어의 재생, 정지, 일시정지
void start()
void stio()
void pause() 를 이용한다
MediaPlayer의 해제
MediaPlayer를 다 사용후에는 release(), reset()으로 정리한다.
release() : 객체를 완전히 파괴하여 더이상 사용할 수 없는 상태로 해제
reset() : 초기화되지 않은 처음 상태로 되돌림. 재 초기화하여 다시 사용가능
상태변화
미디어의 길이, 위치
int getDuration() : 총 재생 길이
int getCurrentPosition() : 현재 재생위치
void seekTo(int msec) : 재생위치를 임의로 변경
콜백메서드
MediaPlayer는 상태가 변경되거나 에러가 발생할 때 미리 등록된 콜백 메서드를 호출한다.
'Developer > Android' 카테고리의 다른 글
Android NDK (0) | 2014.11.24 |
---|---|
Eclipse ADT 플러그인 없이 안드로이드 프로젝트 생성 & 빌드하기 (0) | 2014.10.08 |
Fragment (0) | 2014.07.10 |
안드로이드 Bitmap 이미지파일 크기(용량, 사이즈) 줄이는 방법 (0) | 2012.07.04 |
AdapterView(2) - BaseAdapter를 상속받아 ListView구현 (0) | 2012.07.04 |