마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

sound pool사용시 튕기현상

0 추천
<소스파일입니다>

 

 

package std.neomind.prtclague;

import android.media.*;
import android.os.Bundle;
import android.app.Activity;
import android.content.*;
import android.content.DialogInterface.OnClickListener;
import android.view.*;
import android.widget.*;
import android.*;
import android.view.View;

public class MainActivity extends Activity {
 private MediaPlayer mainbgm;
 SoundPool clkbtn;
 SoundPool clkbackbtn;
 int gb;
 int bb;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        mainbgm = MediaPlayer.create(this, R.raw.mainbgm);
        mainbgm.start();
        mainbgm.setLooping(true);
        gb = clkbtn.load(this, R.raw.clkbtn, 1);
        bb = clkbackbtn.load(this, R.raw.clkbackbtn, 1);
        findViewById(R.id.startgame).setOnClickListener(mClickListener);
        findViewById(R.id.optionbtn).setOnClickListener(mClickListener);
        findViewById(R.id.miniclip).setOnClickListener(mClickListener);
        findViewById(R.id.howtogame).setOnClickListener(mClickListener);
        findViewById(R.id.highscore).setOnClickListener(mClickListener);
        findViewById(R.id.buyscenario).setOnClickListener(mClickListener);
        findViewById(R.id.buynecroa).setOnClickListener(mClickListener);
        findViewById(R.id.buybrainbug).setOnClickListener(mClickListener);
        findViewById(R.id.btninfom).setOnClickListener(mClickListener);
    }
   
    Button.OnClickListener mClickListener = new Button.OnClickListener() {
    public void onClick(View prsmainbtn) {
     
  clkbtn.play(gb, 1, 1, 0, 0, 1);
  
     switch (prsmainbtn.getId()) {
     
  case R.id.optionbtn:
   break;
   
  case R.id.buyscenario:
   break;
   
  case R.id.buynecroa:
   break;
   
  case R.id.buybrainbug:
   break;
   
  case R.id.startgame:
   break;
   
  case R.id.howtogame:
   break;
   
  case R.id.highscore:
   break;
   
  case R.id.miniclip:
   break;
   
  case R.id.btninfom:
   break;
  }
  
 }
    };
   
    @Override
    protected void onPause() {
     // TODO Auto-generated method stub
     super.onPause();
     mainbgm.pause();
    }
   
    @Override
    protected void onRestart() {
     // TODO Auto-generated method stub
     super.onRestart();
        mainbgm.start();
    }
   
    @Override
    public void onBackPressed() {
     // TODO Auto-generated method stub
     super.onBackPressed();
    }
}

 

<소스파일 끝>

사운드풀 관련부분을 모두 주석처리했을 때 이상없이 작동합니다. 그런데.. 사운드풀만 쓰면 어플 키자마자 튕기네요 ㅠㅠ 왜이런가요 ㅠ 미디어플레이어도 정상작동합니다.. 테스트 펌웨어는 4.12, 4.4 두가지였구요.. 리소스도 잘 있습니다.(사운드풀은 각각 0.17초, 0.24초 mp3파일)
NEO MIND (310 포인트) 님이 2014년 2월 8일 질문
NEO MIND님이 2014년 2월 8일 수정

1개의 답변

0 추천
 
채택된 답변

음.. SoundPool 사용하실 때, New 를 먼저해줘야하지않을까요?

 

SoundPool clkbtn;

clkbtn = new SoundPool(최대스트림수, 오디오스트림타입(AudioManager.STREAM_MUSIC), 샘플링품질(0));

int gb = clkbtn.load(context, 리소스id, 우선권)

clkbtn.play (실행시킬 사운드id, 좌볼륨, 우볼륨, 우선순위, 반복여부, 속도)

 

http://blog.naver.com/dobc1221?Redirect=Log&logNo=100170101854 참고하세요~

초보개발자ㅠ (33,870 포인트) 님이 2014년 2월 10일 답변
NEO MIND님이 2014년 2월 10일 채택됨
아..하하.. 이거 질문올리고 뒤적거리다가 실수한거 발견하고 다시고쳤었네요..ㅎㅎㅎ 질문안지워성.ㅋㅋㅋ

수정된소스는 이렇슴당


    private MediaPlayer mainbgm;
    private SoundPool clkbtn;
    private SoundPool clkbackbtn;
    private int gb;
    private int bb;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mainbgm = MediaPlayer.create(this, R.raw.mainbgm);
        mainbgm.start();
        mainbgm.setLooping(true);
        clkbtn = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
        clkbackbtn = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
        gb = clkbtn.load(this, R.raw.clkbtn, 1);
        bb = clkbackbtn.load(this, R.raw.clkbackbtn, 1);
        
        findViewById(R.id.startgame).setOnClickListener(mClickListener);
        findViewById(R.id.optionbtn).setOnClickListener(mClickListener);
        findViewById(R.id.miniclip).setOnClickListener(mClickListener);
        findViewById(R.id.howtogame).setOnClickListener(mClickListener);
        findViewById(R.id.highscore).setOnClickListener(mClickListener);
        findViewById(R.id.buyscenario).setOnClickListener(mClickListener);
        findViewById(R.id.buynecroa).setOnClickListener(mClickListener);
        findViewById(R.id.buybrainbug).setOnClickListener(mClickListener);
        findViewById(R.id.btninfom).setOnClickListener(mClickListener);
    }
    
    Button.OnClickListener mClickListener = new Button.OnClickListener() {
    public void onClick(View prsmainbtn) {
       
        clkbtn.play(gb, 0, 1, 1, 0, 1);
       
        switch (prsmainbtn.getId()) {
       
        case R.id.optionbtn:
            break;
           
        case R.id.buyscenario:
            break;
           
        case R.id.buynecroa:
            break;
           
        case R.id.buybrainbug:
            break;
           
        case R.id.startgame:
            break;
           
        case R.id.howtogame:   
            break;
           
        case R.id.highscore:
            break;
           
        case R.id.miniclip:
            break;
           
        case R.id.btninfom:
            break;
        }
       
    }
    };
    
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        mainbgm.pause();
    }
    
    @Override
    protected void onRestart() {
        // TODO Auto-generated method stub
        super.onRestart();
        mainbgm.start();
    }
    
    @Override
    public void onBackPressed() {
        clkbtn.play(gb, 0, 1, 1, 0, 1);
        // TODO Auto-generated method stub
        super.onBackPressed();
    }
}
...