android - 均衡器 getBandLevel(i) 返回值 0

标签 android equalizer

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

这是我的循环代码:

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,但它们没有。它们有正确的设置

代码:

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) {

        }
    });
}

最佳答案

SeekBarSeekBar.OnSeekBarChangeListener 正在更改预设的值。

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

SeekBar seekbar= (SeekBar)findViewById((short)x);
seekbar.setOnSeekBarChangeListener(null);
seekbar.setProgress(m_equalizer.getBandLevel((short) x) - lowerEqualizerBandLevel );
seekbar.setOnSeekBarChangeListener(yourListenerHere);

关于android - 均衡器 getBandLevel(i) 返回值 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35831900/

相关文章:

windows - 计算机上所有音频的实时均衡器

c++ - 改进音乐频率分析仪的参数

java - (C#或Java)将输出声音发送到均衡器

c++ - 直方图均衡的属性?在没有人工制品的情况下增强对比度?

java - 了解如何设置 Cloud Firestore 数据库

Android 通过电话号码和联系人姓名搜索联系人(两者同时进行)

android - 外部与内部存储器存储。我该用什么?

没有java的android ndk open gl es 2设置

android - 请使用覆盖选项或检查定义,koin android?

jquery - Foundation Zurb 均衡器问题