-1
私はメディアプレーヤーで自分のオンラインラジオを作成しました。ベース、トレブル、リバーブなどのさまざまなサウンドエフェクトのイコライザーを設定する必要があります。メディアプレーヤーはメインのAcitvityにあります。私の主な活動と一緒にイコライザを含むこのアクティビティをどのように実装するのですか?mediaplayerアクティビティでイコライザを実装する方法
私のイコライザーで棒にだけ求める:
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;
}
}
可読性のための文法修正 –