我遇到了一些问题,我真的可以在两者上都使用一些帮助。首先是我试图让应用程序启动时播放音频文件,并且一旦摇动发生就停止。 (它在任何一个屏幕上都没有播放它)。我遇到的另一个问题是当我摇动音频应该播放的手机时。它就是这样做的,但问题是在音频播放结束时会发出流行音。该噪音不在音频文件中,所以我不确定声音来自哪里。任何帮助,将不胜感激。提前致谢。音频播放结束时发生咔嗒声。
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();
}
}
哇!这是一个整体堆积'帮助'的代码来消化。在将代码转储到无法播放25个独立声音的网站之前,您是否从未想过将它用于一种声音?另外,我不赞成在这里添加'java'标签。在Java中,你会使用JavaSound来播放声音 - Android是一个完全不同的故事。 –
声音(除onCreate之外)都播放。我遇到的其他人唯一的问题就是声音结束时的流行噪音。我只是想知道是否有人在某个时候遇到过这个问题。 – steven