안드로이드 앱을 개발할 때 사운드를 재생하는 방법을 이야기해보자.
앱을 만들 때 소리가 없으면 심심하지 않은가?
사운드는 크게 2가지, 효과음과 BGM 등으로 나뉠 수 있다.
안드로이드에서는 짧은 효과음의 경우 SoundPool이라는 클래스를 활용한다.
그리고 BGM 등 긴 사운드를 재생하기 위해서는 Media Player 클래스를 다룬다.
바로 오늘의 주제이다. 구현해보자.
1. 화면 구성하기(XML)
필자는 위와 같이 화면을 구성하였다.
재생 버튼에서는 Start/Stop 사운드 함수 테스트 용이고,
일시 정지 버튼은 Start/Pause 함수를 테스트 하기 위함이다.
<?xml version="1.0" encoding="utf-8"?> 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/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="재생" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.26" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.499" />
<Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="일시정지" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/button" app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> |
2. Raw 리소스 폴더를 생성하자.
-안드로이드 에서는 사운드 리소스 파일을 Raw 폴더에서 불러온다
-참고로, 안드로이드에서 지원하는 사운드 포맷은 mp3,aac,wma,amr,ogg,midi,wav 이다.
Project 탭 -> res 폴더 -> Directory 선택 후 Raw 폴더를 만들자.
생성된 Raw 폴더안에 테스트 할 사운드 파일을 넣자.
3. 소스 작업하기
public class MainActivity extends AppCompatActivity { // reset() 함수만으로도 동작한다. // 반복재생하기
|
각각의 버튼에 stop 과 pause 에 대한 예제를 구현 해보았다.
사운드 재생 중 완전 종료 및 일시 정지 및 재생등이 잘 동작된다. 위는 예제이기에 각자의 코드에 맞게 응용이 필요하다. 주요 한 점은, MediaPlayer 상태 다이어그램을 보고 코드를 작성하는 것이다.
즉, Stop 이 되었다면 바로 Start 를 할수 없고 리소스를 처음부터 재 생성하는 과정이 필요하다.
Pause 는 재생 중 멈추는 기능이기에 다시 Start 가 가능하다.
그리고, 앱을 종료하거나 MedaPlayer 를 더 이상 사용치 않을때는
항상 release 를 통해 자원을 반납 해주어야 한다.
커피 한잔과 함께
행복한 하루 되시길 바랍니다. 감사합니다.
'앱 만들기 > 안드로이드 study' 카테고리의 다른 글
Admob 배너 광고 소스 적용하기 (8) | 2020.05.01 |
---|---|
안드로이드 화면 전환시 작업처리. onConfigurationChanged (4) | 2020.04.30 |
Admob 배너 광고 생성하기-1. (4) | 2020.04.21 |
안드로이드 앱 아이콘 만들기. (4) | 2020.04.19 |
Eclipse auto import 기능 사용하기. (8) | 2020.04.17 |
댓글