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

}

4

3 回答 3

1

在我播放的声音结束时,我也有这个声音点击问题(或者你称之为流行)。当时我的文件是.wav 文件,但是在我将声音文件转换为.ogg 后,他的点击声音消失了。我在 Android 模拟器上遇到了这个问题。

于 2011-08-25T18:32:59.563 回答
0

它在 on create 中不起作用,因为当您在此处调用 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 )

于 2011-08-31T12:28:14.707 回答
0

我通过从使用声音池切换到使用媒体播放器来修复它。还必须确保 release() 否则会导致其他问题,例如声音停止播放。

于 2011-09-08T22:29:13.287 回答