java - 从原始文件夹播放随机声音

标签 java android eclipse random soundpool

我目前有一个 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/

相关文章:

android - 如何更改 Spinner 下拉项的文本颜色?

Eclipse OSGI 配置 : relative paths and/or @config. 类似目录的替换?

eclipse - Gradle Cargo 插件,不登录 Eclipse 控制台

java - Maven在尝试连接到Cloudera URL以获取CDH Jar位置时显示错误

java - hibernate error java.lang.ClassNotFoundException : javax. persistence.Persistence 是什么意思?

java - Anylogic新分支抛出 "cannot be resolved to a variable"错误

java - 在 javac 中禁用 StringBuilder 优化

java - 从内部类的对象访问外部类函数

android - 如何用逗号分隔数组列表值并放入hashmap

android - phonegap android 检查设备是否有闪存