Soundpool 音量不变

Posted

技术标签:

【中文标题】Soundpool 音量不变【英文标题】:Soundpool volume not changing 【发布时间】:2017-04-29 07:28:34 【问题描述】:

我有 8 种不同的 Soundpool 噪音,都有自己的搜索栏来控制音量。我有日志显示搜索栏的数字正在按应有的方式变化,但音量在 90% 的时间里都没有变化(奇怪的是它偶尔会起作用)。

这是 onCreate 中设置音量的代码 -

dryerVolumeControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() 

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
            double dryerVol = (double) progress / (double) maxVolume;

            Log.i("Dryer Volume", String.valueOf(dryerId) + " " + String.valueOf((float) dryerVol));
            mySound.setVolume(dryerId, (float) dryerVol, (float) dryerVol);
        

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) 

        

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) 
            Log.i("Dryer Volume", "On stop touching");
            mySound.setVolume(dryerId, (float) dryerVol, (float) dryerVol);
        
    );

我添加了 onStop 代码,因为它可能会起作用。烘干机的id和volume好像都可以,为什么volume不变呢?

如果您需要查看其他内容,请告诉我。 (我可以链接到 github 以便有人可以检查所有代码吗?这“安全”吗?)

【问题讨论】:

请提供github链接,我将不胜感激。我也在做这样的事情,需要完整的代码.. 【参考方案1】:

使用此代码启动烘干机-

dryerStreaming = mySound.play(dryerId, (float) dryerVol, (float) dryerVol, 1, -1, 1);

然后我应该用 - 控制音量

mySound.setVolume(dryerStreaming, (float) dryerVol, (float) dryerVol);

【讨论】:

以上是关于Soundpool 音量不变的主要内容,如果未能解决你的问题,请参考以下文章

SoundPool 中的流音量与 AudioManager 中的音量

Android SoundPool 左/右音量

Seekbar 控制 Soundpool,停止工作

如何通过代码使 SoundPool 静音?

AudioTrack、SoundPool 或 MediaPlayer 我应该使用哪个?

有效地为 SoundPool 加载声音(全局 SoundPool?)