본문 바로가기
어플 개발

안드로이드 스튜디오 음악재생 미디어 플레이어 사용 방법 in kotlin section 1

by MinervaG 2020. 4. 23.

안드로이드 스튜디오를 활용하여 미디어 플레이어를 만들기 위한 간단한 예제는 많이 있지만, 최대한 심플하게, 버튼을 눌렀을 때 특정 소리가 나오도록 하는 방법에 대해서 공유하고자 합니다.

 

 

음악 재생을 위해 필요한 코드는 딱 3줄입니다. 재생을 위한 가장 최소 코드를 아래와 같이 나타내었습니다.

 

class MainActivity : AppCompatActivity() {

private lateinit var wowh: MediaPlayer

override fun onCreate(savedInstanceState: Bundle?) {

wowh = MediaPlayer.create(this, R.raw.wowsound8)

button.setOnClickListener {

wowh.start()

}

 

빨간색으로 표기한 코드가 반드시 필요한 코드입니다. Wow라는 효과음을 사용하기 위해 class 바로 아래에 private lateinit var wowh: MediaPlayer로 선언하였고, wowh라는 variableMediaPlayer로 사용하겠다는 것을 표기하였습니다. 그리고, 아래에 wowh에 대해서 어떤 미디어 파일을 가져올 것인지 정해야 하기 때문에, raw 폴더에 는 wowsound8 이라는 파일을 불러오도록 wowh = MediaPlayer.create(this, R.raw.wowsound8)와 같이 작성하였습니다.

 

이 코드 덕분에 wowhraw 폴더 안에 있는 wowsound8 이라는 파일을 읽어 오도록 설정이 됩니다. raw 폴더 안에 다양한 음원 파일을 넣어 두고, 위의 코드처럼 각각 선언을 해서 사용하면 다양한 음원을 컨트롤할 수 있게 됩니다. 마지막으로 button이 눌리면 wowh.start()로써 wowh를 실행하라는 의미로 코드를 작성하였습니다. .start()가 바로 음악을 실행하라는 명령어가 됩니다.

 

다음은 raw 폴더에 대한 작성 방법입니다. res에서 마우스로 우클릭하여 New – Android Resource Directory를 눌러서 폴더를 만들어 줍니다. 이때 Directory nameraw로 해 주시고, resource typeraw로 설정 후 OK를 누르시면 됩니다. 그리고, 이후 raw 폴더 안에 mp3 파일을 복사 붙이기로 넣어 주시면 됩니다.

 

 

음악 재생을 위해서 딱 3줄 코드만 있으면 되는데, 너무 복잡하게 설명이 된 자료가 많은 것 같아 가볍게 작성을 해 보았습니다.

 

만약 해당 음원이 아니라 앱 내에서 게임과 같은 동작이 아닌 back ground music BGM처럼 계속 흘러나오게 하고 싶을 경우에는 forwhile문처럼 루프 동작을 시키면 됩니다. 하지만 이때 forwhile문을 사용하는 것이 아니라, 단순하게 코드 한 줄로 지속 반복될 수 있도록 할 수 있습니다.

 

wowh.isLooping= false

 

위에 작성한 isLooping이 바로 반복 명령어입니다. 여기서 wowh라는 음원이 한번 실행되면 이후 계속 반복되도록 하고 싶을 경우 아래처럼 falsetrue로 변경해 주시면 됩니다.

 

wowh.isLooping= true

 

해당 코드의 삽입 위치는 wowh.start() 전에만 삽입해 주시면 됩니다. 기본적으로 isLooping에 대해서는 falsedefault입니다. 즉 한 번만 재생하고, 반드시 종료가 되는 것이 기본입니다. 따라서 true를 표기함으로써 지속적으로 BGM 효과를 유지하실 수 있게 됩니다.

 

음원을 재생했다면, 멈추는 방법이 필요로 하게 됩니다. 일시 정지 방법과 음악을 멈추는 방법에 대해서 다음 포스팅에서 설명을 진행하겠습니다. 간혹 음악 정시 명령 후 다시 재생을 하고 싶음에도 재생이 안 되는 경우가 있는데, 해당 해결책도 함께 소개하겠습니다. 또한 음원의 볼륨을 사전에 개발자가 원하는 크기로 설정하는 방법이 있기 때문에, 해당 방법도 함께 다음 포스팅에서 설명하도록 하겠습니다.

반응형

댓글


TOP