一、柱形图谱
MainActivity.class
package im.com.work.qupudemo; import android.content.Intent; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.audiofx.Visualizer; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; public class ZhuxingActivity extends AppCompatActivity { Button qxbtn1; private static final String TAG = "AudioFxActivity"; private static final float VISUALIZER_HEIGHT_DIP = 50f; private MediaPlayer mMediaPlayer; private Visualizer mVisualizer; BaseVisualizerView mBaseVisualizerView; LinearLayout ll; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zhuxing); qxbtn1 = (Button) findViewById(R.id.qxbtn1); ll = (LinearLayout) findViewById(R.id.ll); setVolumeControlStream(AudioManager.STREAM_MUSIC); mMediaPlayer = MediaPlayer.create(this, R.raw.test); setupVisualizerFxAndUi(); mVisualizer.setEnabled(true); mMediaPlayer.start(); mMediaPlayer.setLooping(true); mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mediaPlayer) { mVisualizer.setEnabled(false); } }); qxbtn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mMediaPlayer.stop(); Intent intent =new Intent(ZhuxingActivity.this,MainActivity.class); startActivity(intent); } }); } /** * 生成一个VisualizerView对象,使音频频谱的波段能够反映到 VisualizerView上 */ private void setupVisualizerFxAndUi() { mBaseVisualizerView = new BaseVisualizerView(this); mBaseVisualizerView.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, (int) (VISUALIZER_HEIGHT_DIP * getResources() .getDisplayMetrics().density))); ll.addView(mBaseVisualizerView); mVisualizer = new Visualizer(mMediaPlayer.getAudioSessionId()); // 参数内必须是2的位数 mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); // 设置允许波形表示,并且捕获它 mBaseVisualizerView.setVisualizer(mVisualizer); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); if (isFinishing() && mMediaPlayer != null) { mMediaPlayer.stop(); mVisualizer.release(); mMediaPlayer.release(); mMediaPlayer = null; } } }
VisualizerView.class
package im.com.work.qupudemo; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect;