2011-07-29 5 views
0

두 가지 문제가있어서 두 가지 문제에 대한 도움을받을 수 있습니다. 첫 번째는 응용 프로그램이 시작될 때 오디오 파일을 재생하려고 시도하고 흔들림이 발생하면 즉시 중지하는 것입니다. (그것은 어느 한 화면에서 전혀 재생되지 않습니다). 내가 겪고있는 또 다른 문제는 오디오가 재생되어야하는 전화를 흔들 때입니다. 그것은 바로 그 일이지만, 문제는 오디오를 재생할 때 소리가 나게하는 것입니다. 그 소리는 오디오 파일에 없으므로 그 소리가 어디에서 오는지 정확히 알 수는 없습니다. 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.오디오 재생이 끝날 때 클릭 소음이 발생합니다.

public class Ask extends Activity{ 
private SensorManager mSensorManager; 
private ShakeEventListener mSensorListener; 
String[] answer; 
int possibleAnswers, randomAnswer, talkRun=0; 
long lastClick; 


@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ask); 

     final Random generator = new Random(); 




     //Sounds 
     final SoundPool sounds = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
     final int sound0 = sounds.load(this, R.raw.coughing, 1); 

     final int sound25 = sounds.load(this, R.raw.askbud, 1); 


     sounds.play(sound25, 1f, 1f, 1, 0, 1f); 

     mSensorListener = new ShakeEventListener(); 
     mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
     mSensorManager.registerListener(mSensorListener, 
      mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
      SensorManager.SENSOR_DELAY_UI); 

     final TextView tv = (TextView)findViewById(R.id.answer); 


     mSensorListener.setOnShakeListener(new ShakeEventListener.OnShakeListener() { 

      public void onShake() { 
       if (System.currentTimeMillis() - lastClick > 500) { 
        lastClick = System.currentTimeMillis(); 
         sounds.stop(sound25); 
        sounds.stop(sound0); 


         randomAnswer = generator.nextInt(possibleAnswers); 


         if(randomAnswer==0){ 
         sounds.play(sound0, 1f, 1f, 1, 0, 1f); 
         } 

       } 
      } 
     }); 
    } 





@Override 
    protected void onResume() { 
    super.onResume(); 
    mSensorManager.registerListener(mSensorListener, 
     mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
     SensorManager.SENSOR_DELAY_UI); 
    } 

    @Override 
    protected void onStop() { 
    mSensorManager.unregisterListener(mSensorListener); 
    super.onStop(); 
    } 

}

+0

와우! 그것은 소화 할 코드의 완전한 도움이됩니다. 25 개의 별개의 사운드가 들리지 않는 코드를 사이트에 덤핑하기 전에 하나의 사운드로 작동하도록하는 일은 결코 발생하지 않았습니까? 또한 여기에 'java'태그를 추가하는 것을 승인하지 않습니다. Java에서는 JavaSound를 사용하여 사운드를 재생합니다. Android는 완전히 다른 이야기입니다. –

+0

사운드 (onCreate 사운드 제외)가 모두 재생됩니다. 내가 가지고있는 다른 문제는 사운드의 끝 부분에있는 팝 노이즈입니다. 그리고 다른 사람들이이 문제를 어느 정도 겪었는지 궁금합니다. – steven

답변

0

내가 전환하여 고정)

public void setOnLoadCompleteListener (SoundPool.OnLoadCompleteListener listener) 

http://developer.android.com/reference/android/media/SoundPool.html#setOnLoadCompleteListener(android.media.SoundPool.OnLoadCompleteListener에서 찾아보세요 여기에 플레이 호출 할 때 소리가 아직로드되지 않기 때문에 사운드 풀 사용에서 미디어 플레이어 사용에 이르기까지. 또한 release()를해야하거나 사운드 재생이 멈춘 것처럼 다른 문제를 일으키고 있는지 확인해야합니다.

1

나는이 소리를 클릭 문제가 있었다 (또는 당신이 그것을 부르는 팝) 내가 연주 된 소리의 끝에서. 내 파일은 .wav 파일 이었지만 사운드 파일을 .ogg로 변환 한 후 소리가 사라졌습니다. Android 에뮬레이터에서이 문제가 발생했습니다.

0

는 작동하지상의 만들려면

sounds.play(sound25, 1f, 1f, 1, 0, 1f);  

관련 문제