您的位置:华清远见教育科技集团 >> Android资料 >>Android可视化音频均衡器  
 
Android可视化音频均衡器
分享到:

均衡器是一种可以分别调节各种频率成分电信号放大量的电子设备,通过对各种不同频率的电信号的调节来补偿扬声器和声场的缺陷,补偿和修饰各种声源及其它特殊作用。一般均衡器仅能对高频、中频、低频三段频率电信号分别进行调节。在创建Equalizer实例时,在音频框架层将会同时创建一个均衡器引擎。均衡器的细节由OpenSL ES 1.0.1规范定义。

为了在通过AndroidAudioTrack、MediaPlayer进行音频播放时具有均衡器特效,在构建Equalizer实例时指明音频流的会话ID即可。如果指定的会话ID为0,则Equalizer作用于主要的音频输出混音器(mix)上,Equalizer将会话ID指定为0要"android.permission.MODIFY_AUDIO_SETTINGS"权限。

均衡器涉及的参数包括:
        PARAM_BAND_FREQ_RANGE、PARAM_BAND_LEVEL、
        PARAM_CENTER_FREQ、PARAM_CURRENT_PRESET、PARAM_GET_BAND、
        PARAM_GET_NUM_OF_PRESETS、PARAM_GET_PRESET_NAME、PARAM_LEVEL_RANGE、
        PARAM_NUM_BANDS、PARAM_STRING_SIZE_MAX等。

均衡器常用的方法包括:
        getNumberOfBands () //获得频段数
        getBandLevel() //获得频段增益(db)
        getBandLevelRange() //获得频段增益范围
        getCenterFreq() //获得中心频率
        setBandLevel() //设置频段增益(db)
        setParameterListener() //设置Equalizer.OnParameterChangeListener监听器

下面是实现均衡器可视化的一般过程:
        mEqualizer = new Equalizer(0, mMediaPlayer.getAudioSessionId());
        mEqualizer.setEnabled(true); //打开均衡器
        short bands = mEqualizer.getNumberOfBands(); //获得频道数
        final short minEQLevel = mEqualizer.getBandLevelRange()[0]; //小增益
        final short maxEQLevel = mEqualizer.getBandLevelRange()[1]; //大增益
        for (short i = 0; i < bands; i++)
        {
            int centerFreq = mEqualizer.getCenterFreq(band) / 1000; //获得中心频率
            short gain = mEqualizer.getBandLevel(band); //获得频段增益
            ……..
        }

 
 更多相关文章

·Android重低音及环绕音音效的添加
·如何使用Android JetPlayer类
·Android RingtoneManager 铃声管理
·Android AudioTrack音频播放分析
·Android音频记录的处理
·Android AudioManager音量控制流程