2014-11-17 3 views
-1

Android에서 소리를 재생하는 데 문제가 있습니다.안드로이드 재생 음향 효과.

내 첫 번째 시도는 내 onButtonClick 함수 안에 모두 포함되어있어 약 20 번의 클릭만으로 효과적이었습니다. 그 때 소리는 멈췄다. 내 모든 다른 앱이 소리를 내지 않기 때문에 안드로이드의 전체 사운드 풀을 사용했다고 생각합니다. 이 이제 전역 변수

MediaPlayer clickSound; 

이며, 그것이 내에서 onCreate() 메소드 내에서 인스턴스화 될 수 있도록

public void onButtonClick(View view) 
{ 

MediaPlayer clickSound = MediaPlayer.create(this, R.raw.click); 
clickSound.start(); 

//... other onButtonCode 

} 

난 이후 약간이를 변경했습니다. onbuttonClick에 clickSound.start()가 있습니다. 하지만이 방법은 효과가 없습니다. 그 소리는 무작위로 보인다. 때때로 클릭이있을 것입니다. 때때로 소리가 들리지 않을 것입니다. 또는 때로는 소리가 약간 흘러 넘치고 소리가 끝나기 전에 끝납니다. 좋은면에서는 사운드 풀을 완전히 채우지 않는 것 같아서 테스트하는 동안 계속 소리를들을 수 있습니다.

사운드 기능을 제대로 작동 시키려면 어떻게해야합니까? clickButton.stop()을 추가하려고했지만 사운드가 전혀 들리지 않게되었습니다. 아마도 눈에 띄기 전에 멈추었을 것입니다.

답변

0

사용 후 자원을 해제해야합니다.

clickSound.release(); 
clickSound = null; 

나는 다음과 같은 제안 :

onResume에서 플레이어를 초기화 :

clickSound = MediaPlayer.create(this, R.raw.click); 

출시 능숙를 onPause에서 :

clickSound.release(); 
clickSound = null; 

사용 버튼 사운드를 재생하기 :

clickSound.start(); 
0

SoundPool을 대신 사용하십시오. 플레이

soundPool = new SoundPool(1, AudioManager.STREAM_SYSTEM, 0); 
    resId = soundPool.load(context, R.raw.click, 1); 

:

private void playSpecSound(int resId) 
{ 
    if(soundPool != null) 
    { 
     if(0 == soundPool.play(resId, 1f, 1f, 0, 0, 1.0f)) 
     { 
      Log.e(TAG, "Play specified sound failed !"); 
     } 
    } 
}