2016-12-17 43 views
-1

我已经在媒体播放器中创建了我的在线收音机。我必须为贝司,高音,混响等可变声音效果设置均衡器,而我的媒体播放器主要是Acitvity。如何实现包含我的主要活动的均衡器的这个活动?如何通过我的媒体播放器活动实现均衡器

我用均衡器搜索栏只:

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; 
     } 
    } 
+0

语法修复以提高可读性 –

回答

0

木箱均衡

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 implementation crash 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