我想录制不同的声音并用我手机上的“SoundPool”播放。 目前,我将声音保存在“\ res \ raw”文件夹中,并使用hashMap加载它。
我希望你能帮助我。
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
spool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
soundsMap = new HashMap<Integer, Integer>();
soundsMap.put(1, spool.load(context, R.raw.alan1, 1));
soundID = soundsMap.get(1);
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
loopPool = spool.play(soundID, volume, volume, 5, 0, 1f);
答案 0 :(得分:0)
您没有说明您遇到了什么问题,但您的音量处理不正确。
SoundPool.play()
中指定的卷应该是从0.0到1.0的浮点值,而AudioManager.getStreamVolume()
的返回值是0到AudioManager.getStreamMaxVolume()
之间的整数。
您应该只指定1.0(或更小)的音量,系统会相应地缩放它。