diff options
Diffstat (limited to 'src/com/pheelicks/app/MainActivity.java')
-rw-r--r-- | src/com/pheelicks/app/MainActivity.java | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/com/pheelicks/app/MainActivity.java b/src/com/pheelicks/app/MainActivity.java new file mode 100644 index 0000000..88b0032 --- /dev/null +++ b/src/com/pheelicks/app/MainActivity.java @@ -0,0 +1,113 @@ +package com.pheelicks.app; + +import android.app.Activity; +import android.media.MediaPlayer; +import android.media.audiofx.Visualizer; +import android.os.Bundle; +import android.view.View; + +import com.pheelicks.visualizer.R; +import com.pheelicks.visualizer.VisualizerView; + +public class MainActivity extends Activity { + private MediaPlayer mPlayer; + private Visualizer mVisualizer; + + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + mPlayer = MediaPlayer.create(this, R.raw.test); + mPlayer.setLooping(true); + mPlayer.start(); + + linkVisualizer(mPlayer); + } + + /** + * Links the visualizer to a player + * TODO Refactor this into visualizer + * @param player + */ + private void linkVisualizer(MediaPlayer player) + { + + final VisualizerView visualizerView = (VisualizerView) findViewById(R.id.visualizerView); + + // Create the Visualizer object and attach it to our media player. + mVisualizer = new Visualizer(player.getAudioSessionId()); + mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); + + // Pass through Visualizer data to VisualizerView + Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener() + { + @Override + public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes, + int samplingRate) + { + visualizerView.updateVisualizer(bytes); + } + + @Override + public void onFftDataCapture(Visualizer visualizer, byte[] bytes, + int samplingRate) + { + visualizerView.updateVisualizerFFT(bytes); + } + }; + + mVisualizer.setDataCaptureListener(captureListener, + Visualizer.getMaxCaptureRate() / 2, true, true); + + // Enabled Visualizer and disable when we're done with the stream + mVisualizer.setEnabled(true); + mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() + { + @Override + public void onCompletion(MediaPlayer mediaPlayer) + { + mVisualizer.setEnabled(false); + } + }); + } + + // Cleanup + @Override + protected void onPause() + { + if (isFinishing() && (mPlayer != null)) + { + mVisualizer.release(); + mPlayer.release(); + mPlayer = null; + } + + super.onPause(); + } + + @Override + protected void onDestroy() + { + if (mPlayer != null) + { + mPlayer.stop(); + mPlayer.release(); + mPlayer = null; + } + + super.onDestroy(); + } + + // Actions for buttons defined in xml + public void startPressed(View view) + { + mPlayer.start(); + } + + public void stopPressed(View view) + { + mPlayer.stop(); + } +}
\ No newline at end of file |