我已經創建了一個類MySoundPool(我使用這個類作爲sigelton,但不認爲這是相關的,因爲所有其他作品)。我正在初始化SoundPool,一個HashMap,並獲取AudioManager的上下文。此後我加載了兩個聲音。 MySoundpool使用由方法MySoundPool.playSound(INT指數,浮動率) playSound剪輯速率〜0.5 < =率> = 2.0的執行語句Android的SoundPool.stop似乎不工作
float streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
streamVolume = streamVolume/mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, index, 0, rate);
到目前爲止好。一切正常。 不,它發生在前一個聲音仍在播放時調用playSound,我想在播放新聲音之前停止播放。此前上面的代碼片斷我試圖
mSoundPool.stop(mSoundPoolMap.get(index));
和
mSoundPool.autoPause();
沒有成功。聲音繼續發揮到最後。 任何意見將不勝感激
什麼花招!不使SoundPool.stop()工作,但它服務於我的需求。完美無缺的答謝基蘭! – Addi
沒問題,是的這是一種解決方法,但我只是意識到我沒有真正回答你的問題,而是提供了一種解決方法。看看我上面的編輯,看看如何得到停止工作我相信這是因爲你給stop()錯誤的參數... – DRiFTy
確實!它不是mSoundPoolMap.get(index),而是通過mSoundPool.play(...) 的調用返回的streamID再次感謝您爲我節省了一天 – Addi