Шум щелчка происходит в конце воспроизведения аудио. - PullRequest
0 голосов
/ 29 июля 2011

У меня есть пара проблем, я мог бы действительно использовать некоторую помощь для обоих. Во-первых, я пытаюсь воспроизвести аудиофайл при запуске приложения, и как только происходит встряхивание, оно останавливается. (Он не воспроизводится вообще ни на одном экране, как предполагается). Другая проблема, с которой я сталкиваюсь, - это когда я встряхиваю телефон, звук должен воспроизводиться. Он делает именно это, но проблема в том, что в конце воспроизведения звука он издает поп-звук. Этот шум отсутствует в аудиофайлах, поэтому я не совсем уверен, откуда этот звук. Любая помощь будет оценена. Заранее спасибо.

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();
  }

}

Ответы [ 3 ]

1 голос
/ 25 августа 2011

У меня также была эта проблема щелчка звука (или треск, как вы это называете) в конце звуков, которые я играл. Мои файлы тогда были .wav, но звук щелчка исчез после того, как я преобразовал звуковые файлы в .ogg. Я испытывал это на эмуляторе Android.

0 голосов
/ 09 сентября 2011

Я исправил это, переключившись с использования звукового пула на использование медиаплеера. Также нужно убедиться, что release () или это вызывает другие проблемы, такие как прекращение воспроизведения звука.

0 голосов
/ 31 августа 2011

это не работает при создании, потому что звуки еще не загружены, когда вы вызываете play здесь

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

пожалуйста, посмотрите на

public void setOnLoadCompleteListener (SoundPool.OnLoadCompleteListener listener) 

http://developer.android.com/reference/android/media/SoundPool.html#setOnLoadCompleteListener(android.media.SoundPool.OnLoadCompleteListener)

...