【问题标题】:Cupcake(API3) friendly way to pause/stop sound loops in SoundPool? Any ideas?Cupcake(API3)在SoundPool中暂停/停止声音循环的友好方式?有任何想法吗?
【发布时间】:2010-08-29 00:17:34
【问题描述】:

快速说明:我正在使用 SoundPool 类

http://developer.android.com/reference/android/media/SoundPool.html

我这里有一个简单的按钮,按下时会播放循环声音。它工作得很好。然而,sounds.autoPause(); 直到 API 8 才引入,我真的需要与纸杯蛋糕兼容的东西(API 3)所以我正在浏览由 API 3 过滤的开发参考站点,我看到了暂停,所以我想我会尝试sounds.pause(sound); 但是当我释放它时它并没有停止声音。(也许我只是用错了?)有谁知道一种对纸杯蛋糕友好的方式来停止这种声音?谢谢!

编辑:也尝试了sounds.stop(sound);,但也没有用。

代码:

我的 onCreate:

sounds = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
sound = sounds.load(this.getApplicationContext(), R.raw.red_long_one, 1);

然后这是我的触摸事件

@Override public boolean onTouch(View arg0, MotionEvent event) {

            switch (event.getAction() ) { 
            case MotionEvent.ACTION_DOWN: 
                System.out.println("touch");
                sounds.play(sound, 1, 1, 1, -1, 1);
                break;
            case MotionEvent.ACTION_UP:
                System.out.println("up");
                //autoPause does not work on anything lower than sdk8
                sounds.autoPause();
                break; 
            }

            return false;
        }

我不明白为什么sounds.stop(sound); 似乎不起作用,但我读过的任何文章都建议这样做

我认为值得注意的是,如果我使用sounds.stop(sound);,它会工作一次,然后在我放手后它不会停止。但第一次按下并发布它会按预期工作。

现在,我知道在 andoird 网站上显示的是 streamID 而不是 soundID,但我不知道如何获取 streamID

【问题讨论】:

    标签: java android loops android-1.5-cupcake soundpool


    【解决方案1】:

    您需要使用 streamID 来停止声音。 streamID 由 play() 返回:

    类似的东西:

    //播放声音时记录streamid streamIDSoundFX=soundPool.play(soundFXPoolMap.get(ctSoundFX), streamVolume, streamVolume, 1, 0, 1f);

    //在需要时停止 soundPool.stop(streamIDSoundFX);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多