Я бы предложил использовать getStreamMaxVolume и setStreamVolume, чтобы сделать это:
int origionalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
Затем, как только вы закончите, просто установите его обратно в исходный том.
Я думаю, что я был побежденк пуншу, ну да ладно:)
Какой-то код, который на самом деле это делает, я использую MediaPlayer, а не Soundpool, так как это дает вам полный вызов воспроизведения, который, по-видимому, отсутствует в Soundpool:
final AudioManager mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
final int originalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
MediaPlayer mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDataSource("content://media/internal/audio/media/97");
mp.prepare();
mp.start();
mp.setOnCompletionListener(new OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, originalVolume, 0);
}
});
Кстати, с помощью вызова mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 0, 0, 1.0f);
значения streamVolume на самом деле являются числами с плавающей запятой 0 -> 1, которые представляют собой процент от максимального значения, так что вы действительно просто захотите вставить значение 1.0f.