다루두루

블로그 이미지

차케요

공부하면서 정리하는 노트같은 블로그입니다.

[안드로이드] SoundManager

[안드로이드] 어플만들기 2014. 1. 2. 21:50

 

▣ 안드로이드 게임 프레임워크 만들기 3

 

 SoundManager

사운드 매니저를 하나 만들어 놓으면 필요할 때마다 코드를 반복해서 작성하지 않아도 되고, 다른 프로젝트에서도 쉽게 사용할 수 있습니다. 지난 포스팅에서 해봤듯이 사운드를 재생하는 방법은 두가지 방법이 있는데요.  

 

사운드폴▶ http://kd3302.tistory.com/46

미디어플레이어 ▶ http://kd3302.tistory.com/39

 

게임에 적용하기에는 사운드폴 클래스를 이용해서 개발하는게 용이 합니다. 앞선 포스팅에서 객체생성, 리소스 로딩, 사운드 출력이라는 세단계로 SoundPool을 이용해서 처리했는데요. 여기에서는 위의 세단계를 더욱 쉽게 이용할 수 있도록 SoundManager를 제작하도록 하겠습니다. 

 

■ 먼저 두가지 방법의 차이점을 알아보도록 할게요.

 

사운드는 게임 전체에서 이용하기 때문에 접근성이 쉬워야 하는데요. SoundPool을 이용하려면 객체를 갖고 있거나 인스턴스에 접근할 수 있어야 합니다. 그러나 객체를 프레임워크에서 갖고 있다면 이외의 클래스에서는 접근하기가 어려워 집니다. 그렇기 때문에 싱글턴 패턴을 적용해서 어디서나 접근할 수 있게 해줘야 합니다.

 

■ 클래스를 생성합니다.

 

■ 이렇게 하면 프로젝트 어디서든 SoundManager에 접근할 수 있습니다.

 

다음으로 기본적인 사운드 처리를 구현하겠습니다.

 

 먼저 멤버변수를 선언하고 초기화를 하겠습니다.

 

 

■ 먼저 멤버 변수를 선언 했는데요. 각각의 역할들을 살펴보면...

 

■ 이제 멤버 변수들을 초기화 하겠습니다.

 

 

■ 사운드폴을 생성하고, 리소스의 아이디값을 저장하기 위해서 해시맵을 생성했습니다.

다음으로 시스템에서 오디오매니저의 핸들값을 가져오고, 액티비티의 핸들값을 가져왔습니다.

 

■ 이제 사운드롤 불러올 addSound()메서드를 만들겠습니다.

 

 

■ 애드사운드 메서드는 매개변수로 인덱스 값과, 사운드 리소스의 아이디 값을 받습니다. 이렇게 관리하면 사운드폴이 제공하는 아이디 값이 아닌 매니저의 인덱스 값을 사용해서 사운드 관리를 할 수 있습니다.

 

■ 다음으로 재생하는 메서드를 작성하겠습니다.

게임은 배경음과 효과음 등 크게 두가지 사운드를 사용하는데요.

배경음은 재생시간이 길고, 소리 하나만 반복해서 재생합니다. 효과음은 재생 시간이 짧고,

끝나지 않아도 다시 재생할 수 있으며 반복하지는 않습니다.

 

이점을 염두해 두고 다음과 같이 SoundManager클래스에 두가지 종류의 메서드를

작성하겠습니다.

 

 

 

 

■ 추가한 두가지 메서드의 내용을 보면 오디오 매니저에서 스트림값을 얻어와서 최대 스트림값과 연산해서 사용자의 볼륨값에 맞춰 볼륨을 조절하는 코드를 추가했구요. 두개의 메서드는 매겨변수 부분에서 반복을 지정하는 부분을 제외하고 모두 동일합니다.

 

■ 이제 SoundManager클래스가 완성이 됐습니다.

이것을 사용하는 방법을 알아보도록 하겠습니다. 

저작자표시 비영리 변경금지 (새창열림)
Posted by 차케요

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

카테고리

NEW (900)
아이폰 개발 기초 (7)
취미 (16)
아두이노 (16)
[안드로이드] 어플만들기 (77)
안드로이드 기초 다지기 (61)
슈팅게임 만들기 (4)
[JAVA]자바 공부하기 (48)
C언어 알고리즘 (61)
[Unity3D]유니티3D 강좌 (7)
컴퓨터 (325)
포토샵CS2 강좌 (6)
유용한 프로그램 (244)
리눅스 노트정리 (22)
임베디드 리눅스 (11)
New블로그 (9)
음식의 효능 (4)
일반상식 (56)
HTML 공부 (40)
포토샵 공부 (36)
엑셀 (6)
파워포인트 공부 (19)
노트정리 (38)
일상 (33)
TV영화 (85)
방명록 : 관리자 : 글쓰기
차케요's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

다루두루

공부하면서 정리하는 노트같은 블로그입니다.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • NEW (900)
    • 아이폰 개발 기초 (7)
    • 취미 (16)
      • 아두이노 (16)
    • [안드로이드] 어플만들기 (77)
      • 안드로이드 기초 다지기 (61)
      • 슈팅게임 만들기 (4)
    • [JAVA]자바 공부하기 (48)
    • C언어 알고리즘 (61)
    • [Unity3D]유니티3D 강좌 (7)
    • 컴퓨터 (325)
      • 포토샵CS2 강좌 (6)
      • 유용한 프로그램 (244)
    • 리눅스 노트정리 (22)
      • 임베디드 리눅스 (11)
    • New블로그 (9)
    • 음식의 효능 (4)
    • 일반상식 (56)
    • HTML 공부 (40)
    • 포토샵 공부 (36)
    • 엑셀 (6)
    • 파워포인트 공부 (19)
    • 노트정리 (38)
    • 일상 (33)
    • TV영화 (85)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바