首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >均衡器getBandLevel(i)返回值0

均衡器getBandLevel(i)返回值0
EN

Stack Overflow用户
提问于 2016-03-06 20:06:59
回答 1查看 265关注 0票数 2

我循环我所有的预设,并希望在那之后使用它们。现在,我调用的第一个getBandLevel方法正在返回一个可接受的值,但循环中的所有其他方法调用都返回0。我哪里错了?

下面是我的循环代码:

代码语言:javascript
复制
m_equalizer.usePreset((short)position);
short numberFrequencyBands = .m_equalizer.getNumberOfBands();
final short lowerEqualizerBandLevel = m_equalizer.getBandLevelRange()[0];

for(short x=0;x<numberFrequencyBands;x++)
{
    SeekBar seekbar= (SeekBar)findViewById((short)x);
    seekbar.setProgress(m_equalizer.getBandLevel((short) x) - lowerEqualizerBandLevel ); //Here is getBandLevel returning me 0 after x is 1
}

编辑:我还检查了其他应用程序是否也提供了0,并且它们dont.They有正确的设置

代码:

代码语言:javascript
复制
public void equalizeSound()
{
   ArrayList<String> equalizePresetNames = new ArrayList<String>();
    ArrayAdapter<String> equalizerPresetSpinnerAdapter = new ArrayAdapter<String>(this,R.layout.custom_spinner_item_small,equalizePresetNames);
    equalizerPresetSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    Spinner equalizerPresetSpinner = (Spinner)findViewById(R.id.spinner_presets_eq);

    for(short i=0;i< m_equalizer.getNumberOfPresets();++i)
    {
        equalizePresetNames.add(m_equalizer.getPresetName(i));
    }

    equalizerPresetSpinner.setAdapter(equalizerPresetSpinnerAdapter);

    equalizerPresetSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            m_equalizer.usePreset((short)position);
            short numberFrequencyBands = m_equalizer.getNumberOfBands();
            final short lowerEqualizerBandLevel = m_equalizer.getBandLevelRange()[0];

            for(short x=0;x<numberFrequencyBands;x++)
            {
                SeekBar seekbar= (SeekBar)findViewById((short)x);
                seekbar.setProgress(m_equalizer.getBandLevel((short) x) - lowerEqualizerBandLevel );
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-24 17:37:20

您的SeekBar.OnSeekBarChangeListener s的SeekBar正在更改预设值。

在for循环中设置OnSeekBarChangeListener,删除前一个循环:

代码语言:javascript
复制
SeekBar seekbar= (SeekBar)findViewById((short)x);
seekbar.setOnSeekBarChangeListener(null);
seekbar.setProgress(m_equalizer.getBandLevel((short) x) - lowerEqualizerBandLevel );
seekbar.setOnSeekBarChangeListener(yourListenerHere);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35831900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档