2011-07-29 39 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

我通过切换固定它的声音尚未加载从使用声音池到使用媒体播放器。还必须确保释放(),否则会导致声音停止播放等其他问题。

1

我也有这种声音点击问题(或弹出你称呼它)在我被打的声音结束。我的文件是.wav文件,但是当我将声音文件转换为.ogg后,他的声音消失了。 我在Android模拟器上遇到了这个问题。