IT/안드로이드+JAVA

[안드로이드] 음악파일 재생하기 (MediaPlayer)

안경 쓴 귀니 2020. 11. 22. 00:11
반응형

안드로이드에서 MediaPlayer를 사용해서 프로젝트 리소스 폴더 내 음악파일을 재생하는 예제이다.

지원되는 음악 파일은 mp3, wav 형식 등이고 더 자세한 형식을 아래 링크에서 확인 가능하다.

developer.android.com/guide/topics/media/media-formats?authuser=1&hl=ko

 

 

1. raw 파일 생성

res 폴더 안에 raw 파일을 생성한다.

res 폴더에서 마우스 우클릭 > New > Android Resource Directory

 

2. Resource type으로 raw 선택 후 OK를 선택한다.

raw 폴더가 생성된다.

 

3. raw 폴더 안에 재생할 음악 파일을 추가한다.

예제에서는 test.mp3 파일을 사용한다.

 

4. xml 레이아웃에 버튼을 추가한다.

버튼 text는 PLAY, onClick 이벤트는 onClick으로 지정한다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity">

  <Button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="PLAY"
    android:onClick="onClick"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

5. 메인 액티비티를 작성한다.

public class MainActivity extends AppCompatActivity {

  Button mBtnPlay;
  MediaPlayer mMediaPlayer;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mBtnPlay = findViewById(R.id.btn);
  }

  // PLAY 버튼 이벤트
  public void onClick(View view) {
    // MediaPlayer 없으면 초기화 진행
    if (mMediaPlayer == null) {
      mMediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.test);	// 출력할 음악 파일 세팅
      // 음악 파일 재생이 완료됐을 때 호출될 콜백 세팅
      mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
        // null 처리 및 버튼 텍스트 PLAY로 변경
        mMediaPlayer = null;
        mBtnPlay.setText("PLAY");
        }
      });
    }

    isPlaying();
  }

  // 플레이 체크
  private void isPlaying() {
    if (mMediaPlayer.isPlaying()) {	// 음악 파일 플레이중인 상태
      // 음악 파일 재생 멈추고 버튼 텍스트 PLAY로 변경
      mMediaPlayer.stop();
      mMediaPlayer.reset();
      mMediaPlayer.release();
      mMediaPlayer = null;
      mBtnPlay.setText("PLAY");
    } else {	// 음악 파일 재생중이 아닌 상태
      // 음악 파일 재생하고 버튼 텍스트 STOP으로 변경
      mMediaPlayer.start();
      mBtnPlay.setText("STOP");
    }
  }

}

 

 

반응형