2010-08-29 28 views
1

快速注:我使用的Soundpool類Cupcake(API3)友好的方式來暫停/停止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網站,它說流ID,而不是soundID,但我不知道怎麼去流ID

回答

1

你需要使用流ID來停止聲音。流ID被播放()返回:

這樣的事情:當你播放聲音

//記錄流ID streamIDSoundFX = soundPool.play(soundFXPoolMap.get(ctSoundFX),streamVolume,streamVolume,1,0 ,1f);

//當你需要時停止它 soundPool.stop(streamIDSoundFX);