반응형
Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

Do Something IT

[안드로이드]Media Player 컨트롤 본문

Android

[안드로이드]Media Player 컨트롤

아낙시만더 2010. 12. 20. 13:44
반응형

안드로이드는 간편한 음원 파일및 비디오 파일 컨트롤을 제공하기위해 MediaPlayer를 제공한다.
MediaPlayer는 자신만의 life cycle을 가지고 있다. 우리는 이를 사용하기 위해서 이를 잘파악하고 사용 해야될 것이다.
※ 앞으로 편하게 설명하기위해 MediaPlayer를 mp라 칭하겠다.


윗 그림이 바로 mp의 life cycle이다.  이는 호출되는 메서드에 따라 mp의 상태가 변화함을 알수있다. 자세히 알아보도록 하자.

private MediaPlayer mp = new MediaPlayer();  // MediaPlayer객체 생성

자 mp가 생성되었다.  최초 생성된 mp의 상태는 idle 상태이다. 이 상태는 유휴 상태로 즉 아무것도 하지않는 상태이다. 그러무로 이상태에서는 아무것도 할수없다.  자 이제 mp에 재생시킬 mp3파일이나 비디오 파일을 set해보자.

mp.setDataSource(Url);

이때 우리는 setDataSource();를 이용한다 파라메터값에 url, uri, file path 등이 들어 갈수 있다. 이 메서들 호출하고 나면 mp의 상태는 Initialized 상태가 된다 즉 파일과 mp의 동기화가 된 상태이다.  동기화가 되었다면 이제 파일을 재생하기 위해mp를 준비 시켜야한다.

mp.prepare();

를 하고나면 mp의 상태는 prepared 가되고 이때 부터 우리는 파일을 재생하거나 멈추거나 할수있게 된다. 재생와 일시정지는

mp.start();
mp.pause();

를 통하여 상태를 전환 할수 있다. 이 두상태에서 stop()을 호출하게 되면 노래의 재생은  stopped 상태가 되며 완전히 종료 되게 된다. stopped 상태에서는 다시 start()를 실행 할수 없다. 이때는 다시 prepare();를 시킨후 start();를 실행 하여야 될것이다.  만약에 재생된 mp가 파일의 끝을 만나 종료 되었을 경우

Cmp.getMp().setOnCompletionListener(
    new MediaPlayer.OnCompletionListener() {
     public void onCompletion(MediaPlayer mp) {
     
     }
    });
가 자동으로 호출 된다. 이를 통해 우리는 다음노래를 자동으로 재생하는등 이벤트를 처리 할수 있다.

prepareAsync()의 경우 stopped와 Initialized 에서 호출되는 메소드로 이를 하고나면 preparing 상태가된다 이는 비디오 파일 같은 큰 자원은 prepare 하는데 시간이 걸리므로 prepare(); 보다  prepareAsync();를 사용 하는게 효율적이다. 스트리밍이 끝나고 prepare이 되면 OnpreparedListener.Onprepared()가 호출되어 prepare 상태가되고 mp.start를 이용 하여 재생을 하면된다.

반응형
Comments