package com.terry.AudioFx;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.audiofx.Visualizer;
import android.os.Bundle;
public class AudioFxActivity extends Activity
{
private static final String TAG = "AudioFxActivity";
private MediaPlayer mMediaPlayer;
private Visualizer mVisualizer;
private BaseVisualizerView mBaseVisualizerView;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
setContentView(R.layout.main);
mBaseVisualizerView = (BaseVisualizerView) findViewById(R.id.visualizerview);
mMediaPlayer = MediaPlayer.create(this, R.raw.z8806c);
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start();
setupVisualizerFxAndUi();
}
});
mMediaPlayer.setLooping(true);
}
/**
* 生成一个VisualizerView对象,使音频频谱的波段能够反映到 VisualizerView上
*/
private void setupVisualizerFxAndUi()
{
int audioSessionid = mMediaPlayer.getAudioSessionId();
System.out.println("audioSessionid=="+audioSessionid);
mVisualizer = new Visualizer(audioSessionid);
// 参数内必须是2的位数
mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
// 设置允许波形表示,并且捕获它
mBaseVisualizerView.setVisualizer(mVisualizer);
mVisualizer.setEnabled(true);
}
@Override
protected void onPause()
{
super.onPause();
if (isFinishing() && mMediaPlayer != null)
{
mVisualizer.release();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
}