개발/TIZEN

[TIZEN]10. 타이젠_간단한게임 만들기4_사운드 출력

huiyu 2015. 12. 25. 20:55

6. 사운드 출력

먼저 사운드재생을 위한 파일을 아래 경로에 추가합니다.

첨부파일sounds.zip

 

 

 

 

 

 

재생을 위한 player.h파일을 추가합니다.

1
#include <player.h>
cs

 

다음으로 재생을 위한  player_h파일을 선언합니다. 여기서는 각 음계별로 재생을 위해 7개 생성합니다.

1
player_h player[7];
cs

 

다음으로 player_h를 생성합니다.

1
2
3
4
5
6
7
8
9
char soundSRC[100];
for(int i=0; i<7; i++)
{
    sprintf(soundSRC, "/opt/usr/apps/com.tistory.huiyu.memorygame/res/sounds/sounds_%d.wav", i+1);
 
    player_create(&player[i]);
    player_set_uri(player[i], soundSRC);
    player_prepare(player[i]);
}
cs

player_create()함수를 통해 player_h를 생성하고,

player_set_uri()함수로 player_h에 wav파일을 설정합니다.

res/sounds/경로는 기본적으로 /opt/usr/apps/<패키지명>/res/sounds/의 경로로 들어가게 됩니다.

 

재생을 위한 함수도 추가합니다.

1
2
3
4
5
6
7
8
9
10
11
void play_audio(player_h player)
{
    player_state_e player_state;
    player_get_state(player, &player_state);
 
    if (player_state == PLAYER_STATE_PLAYING)
        player_stop(player);
 
      player_start(player);
}
 
cs

먼저 player_state함수를 추가하여 player_get_state()함수를 통해 현재 플레이상태를 받아옵니다.

다음으로 현재 재생중이면 player_stop()하여 재생 중이던 음을 멈추고, player_start()를 통해 음을 재생시킵니다.

 

이렇게 만든 play_audio()함수는 rectangle 선택시 재생될 수 있도록 clicked_rect 콜백함수에서 호출합니다.

1
2
3
4
5
6
7
8
9
10
11
12
 
static void
clicked_rect(void *user_data, Evas* e,  Evas_Object *obj, void *event_info)
{
    //미리 설정한 오브젝트의 이름을 가져온다
    char* rectName = evas_object_name_get(obj);
    //첫번째 숫자값을 받아온다음
    int num = rectName[0]-'0';
 
    //숫자에 맞는 플레이어를 재생한다.
    play_audio(player[num]);
}
cs

 

마지막으로, app_terminate()함수에서 player를 해제시키면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
static void
app_terminate(void *data)
{
    /* Release all resources. */
    for(int i=0; i<7; i++)
    {
        player_unprepare(player[i]);
        player_destroy(player[i]);
        player[i] = NULL;
    }
}
cs

 

기본적으로 player는 아래와 같이 사용하면 됩니다.

   1. 사운드파일 res/경로에 추가
   2. player.h 헤더파일 추가
   3. player_h파일 선언 후 player_create()함수를 통해 생성
   4. player_set_uri()를 통해 재생파일 경로 설정 후 player_prepare()함수로 재생을 준비합니다.
   5. player_start()와 player_stop()함수로 사운드 재생/정지 설정
   6.다 사용한 player_h는 player_unprepare(), player_destroy()를 통해 메모리 해제

 

728x90
반응형