관리 메뉴

moozi

MP3 플레이어 만들기 2 - MP3 플레이어의 시작 본문

안드로이드개발강좌

MP3 플레이어 만들기 2 - MP3 플레이어의 시작

moozi 2010. 3. 30. 18:11

이번 강좌는 지난 강좌 [ 안드로이드 개발 2.0 ] MP3 플레이어 만들기 1 - AVD에서 MP3 듣기 에서 이어집니다.

지난 강좌에서는 SD Card가 장착된 AVD에 MP3를 넣고 AVD 자체의 Music Player를 이용해서 mp3를 play해 보았는데 이번에는 mp3를 play하고 stop하는 간단한 예제를 작성해 보겠습니다.


1. 다음과 같이 프로젝트를 생성합니다.



( 정확하진 않지만 Android SDK Tools, revision 5를 업데이트 한 후부터 Min SDK Version이 자동으로 입력되지 않는것 같습니다. 수동으로 입력해 주었습니다. )


2. res -> layout -> main.xml 에 다음과 같이 편집합니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

 <ProgressBar android:id="@+id/ProgressBar01"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"></ProgressBar>

 
 <LinearLayout android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="horizontal">
     <Button android:id="@+id/playButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Play"/>
     <Button android:id="@+id/stopButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Stop"/>
 
 </LinearLayout>

</LinearLayout>

코드에서 ProgressBar는 mp3가 play되는 동안 잠시 나타났다가 stop하면 사라집니다. mp3가 play되는 상황을 표시하기 위해 사용되었습니다.



3. src -> my.MyMusic -> MyMusic.java 를 다음과 같이 편집합니다.

package my.MyMusic;

import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MyMusic extends Activity {
   
   private static MediaPlayer audio_play;
   private Button startButton;
   private Button stopButton;
   private ProgressBar progressbar;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       startButton = (Button) findViewById(R.id.playButton);
       stopButton = (Button) findViewById(R.id.stopButton);
       progressbar = (ProgressBar) findViewById(R.id.ProgressBar01);
       progressbar.setVisibility(8); //GONE

 
    startButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
              progressbar.setVisibility(0); //VISIBLE
              play();
              
             }
         });   
  
  
    stopButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
              progressbar.setVisibility(8); //GONE
           stop();
             }
         });
    }
    @Override

    protected void onPause() {
     super.onPause();
     progressbar.setVisibility(8); //GONE
     stop();
    }
   
    public  void play( ) {
       stop();
       audio_play = new MediaPlayer();
       try{
        audio_play.setDataSource("/sdcard/mymusic.mp3"); // mp3파일 경로
        audio_play.prepare(); // 준비
        audio_play.setLooping(false); // 반복재생 false
        audio_play.start(); // 시작
       }catch(IOException e){
        Toast.makeText(MyMusic.this, "Error!!",
          Toast.LENGTH_SHORT).show();
       }
    
    }
   
   
    public  void stop() {
       if (audio_play != null) {
          audio_play.stop(); // 중지
        audio_play.release(); // 자원 반환
        audio_play = null;
       }
    }
}


코드에서 progressbar.setVisibility(8); ProgressBar를 화면에서 사라지게 합니다. 8은 GONE에 해당하는 값인데 GONE은 progressbar가 자신의 영역을 차지하지 않고 완전히 사라지게 합니다. 비슷한 것으로 INVISIBLE이 있는데 INVISIBLE은 뷰가 사라지더라도 원래 차지하고 있던 영역은 그대로 유지됩니다.
progressbar.setVisibility(0);
은 ProgressBar를 나타나게 합니다.

audio_play = new MediaPlayer(); 에서 MediaPlayer 클래스를 사용하는 것을 볼 수 있는데, MediaPlayer클래스 내부에는 mp3와 같은 audio 파일을 시작, 중지, 검색 등의 역할을 하는 많은 메서드들이 존재합니다.

audio_play.setDataSource("/sdcard/mymusic.mp3"); 에서 지난 강좌에 사용했던 mymusic.mp3의 경로를 지정했습니다.

audio_play.setLooping(false);  는 mp3 를 play할 때 반복재생하는 것을 false로 지정합니다.
audio_play.start();  는 mp3를 play합니다.

audio_play.stop(); 는 mp3 재생을 중지합니다.
audio_play.release(); MediaPlay Object에 관련한 자원을 반환합니다.



4. Ctrl + F11 로 실행합니다.

[ 처음 또는 stop 한 상태 ]



[ play 한 상태 ]

play 버튼을 누르면 progress bar가 나타나고 재생이 되며, stop버튼을 누르면 progress bar가 사라지고 재생이 종료됩니다.

 

 

도움이 되셨다면 아래 손가락추천버튼을 눌러주시고 다음뷰에서 구독+해 주세요. 복 받으실거에요 ^^.

Comments