我目前有一个 SoundPool,它可以在屏幕摇动时加载并播放单一声音,我该如何让它在每次摇动屏幕时播放不同的声音?
编辑---
private SensorManager mSensorManager;
private ShakeEventListener mSensorListener;
SoundPool sp;
int soundOne;
int soundTwo;
int soundThree;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
//Shake sound
sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
soundOne = sp.load(this, R.raw.one, 1);
soundTwo = sp.load(this, R.raw.two, 1);
soundThree = sp.load(this, R.raw.three, 1);
//Shake
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensorListener = new ShakeEventListener();
mSensorListener.setOnShakeListener(new ShakeEventListener.OnShakeListener() {
public void onShake() {
if (acceptCheck == 1)
{
sp.play(soundOne, 1, 1, 0, 0, 1);
}
}
});
}
最佳答案
只需使用一个整数列表而不是单独存储它们:
private SensorManager mSensorManager;
private ShakeEventListener mSensorListener;
SoundPool sp;
List<Integer> mSounds = new ArrayList<Integer>();
private Random mRandom = new Random();
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
//Shake sound
sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
mSounds.add(sp.load(this, R.raw.one, 1));
mSounds.add(sp.load(this, R.raw.two, 1));
mSounds.add(sp.load(this, R.raw.three, 1);
//Shake
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensorListener = new ShakeEventListener();
mSensorListener.setOnShakeListener(new ShakeEventListener.OnShakeListener() {
public void onShake() {
if (acceptCheck == 1)
{
sp.play(mSounds.get(mRandom.nextInt(mSounds.size())), 1, 1, 0, 0, 1);
}
}
});
}
关于java - 从原始文件夹播放随机声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21736986/