如何通过我的mediaplayer活动实现均衡器 [英] how to implement the equalizer with my mediaplayer activity

查看:221
本文介绍了如何通过我的mediaplayer活动实现均衡器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在媒体播放器中创建了在线广播.我必须为各种声音效果(例如低音,高音,混响等)设置均衡器,而我的媒体播放器位于主要的Acitvity中.如何在我的主要活动中实施包含均衡器的活动?

I have created my online radio in media player. I have to set equalizer for the variable sound effects like bass, treble, reverb and so on, and my media player is in main Acitvity. How to implement this activity that contains equalizer with my main activity?

仅带有搜寻条的我的均衡器:

My Equalizer with seek bars only :

public class EqualizerActivity extends AppCompatActivity {

    MediaPlayer mediaPlayer;
    LinearLayout linear;
    SeekBar seekbar;
    private Equalizer mEqualizer;
    TextView tvequalizer,tvcenfreq,tvmineq,tvmaxeq;    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainactivity);

        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        mediaPlayer = MediaPlayer.create(this,R.raw.mukilmusic);

        setupEqualizerFxAndUI();
        mediaPlayer.setLooping(true);    

        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mediaPlayer) {
//                mVisualizer.setEnabled(false);
            }
        });
        mediaPlayer.start();
//        tvaudio.setText("Playing audio...");    
    }

    private void setupEqualizerFxAndUI() {
        mEqualizer = new Equalizer(0, mediaPlayer.getAudioSessionId());
        mEqualizer.setEnabled(true);

        linear = (LinearLayout)findViewById(R.id.linear) ;
         tvequalizer = (TextView)  findViewById(R.id.tvequalizer);
        tvequalizer.setText("Equalizer:");
//        linear.addView(tvequalizer);

        short bands = mEqualizer.getNumberOfBands();
        final short minEQLevel = mEqualizer.getBandLevelRange()[0];
        final short maxEQLevel = mEqualizer.getBandLevelRange()[1];
        for (short i = 0; i < bands; i++) {
            final short band = i;

            tvcenfreq = (TextView) findViewById(R.id.tvcenfreq);
        tvcenfreq.setText((mEqualizer.getCenterFreq(band) / 1000) + " Hz");
//          linear.addView(tvcenfreq);

            LinearLayout row = new LinearLayout(this);
            row.setOrientation(LinearLayout.HORIZONTAL);

            tvmineq =  new TextView(this);
            tvmineq.setText((minEQLevel/ 100) + " db");
           // linear.addView(tvmineq);

            tvmaxeq =  new TextView(this);
            tvmaxeq.setText((maxEQLevel/ 100) + " db");
        //   linear.addView(tvmaxeq);

            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                    ViewGroup.LayoutParams.FILL_PARENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT);

            layoutParams.weight = 1;
            seekbar = new SeekBar(this);
            seekbar.setLayoutParams(layoutParams);
            seekbar.setMax(maxEQLevel - minEQLevel);
            seekbar.setProgress(mEqualizer.getBandLevel(band));
            seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                public void onProgressChanged(SeekBar seekBar, int progress,
                                              boolean fromUser) {
                    mEqualizer.setBandLevel(band, (short) (progress + minEQLevel));
                }
                public void onStartTrackingTouch(SeekBar seekBar) {}
                public void onStopTrackingTouch(SeekBar seekBar) {}
            });
            row.addView(tvmineq);
            row.addView(seekbar);
            row.addView(tvmaxeq);
            linear.addView(row);
        }    
    }
    @Override
    protected void onPause() {
        super.onPause();
        if (isFinishing() && mediaPlayer != null) {
//          mVisualizer.release();
            mEqualizer.release();
            mediaPlayer.release();
            mediaPlayer = null;
        }
    }

推荐答案

创建均衡器

Crate an Equalizer

Equalizer equalizer = new Equalizer(0,mediaplayer.getAudioSessionId());
equalizer.setEnabled(true);
equalizer.getNumberOfBands(); //it tells you the number of equalizer in device.
equalizer.getNumberOfPresets();//like Normal Classic,Dance Flat,Folk Heavy Metal,Hip Hop,Jazz, Pop, Rock

链接

Android Visualizer实现崩溃 https://developer.android.com/reference/android/media/audiofx/Equalizer.html http://www. 101apps.co.za/articles/perfect-sound-using-the-equalizer-effect-a-tutorial.html

这篇关于如何通过我的mediaplayer活动实现均衡器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆