diff options
author | Felix Palmer <felix.palmer@metaswitch.com> | 2011-12-04 20:54:25 -0800 |
---|---|---|
committer | Felix Palmer <felix.palmer@metaswitch.com> | 2011-12-04 20:54:25 -0800 |
commit | 40bb6f6c88a747de7c7486f84295c5638aa597c3 (patch) | |
tree | 0b6614f94a442e3d61b334130fef5bed5e818bc6 /src/com/pheelicks/visualizer/VisualizerView.java | |
parent | 464d7441ca821166619e4750e205a06845b0fe67 (diff) | |
download | android_external_android-visualizer-40bb6f6c88a747de7c7486f84295c5638aa597c3.tar.gz android_external_android-visualizer-40bb6f6c88a747de7c7486f84295c5638aa597c3.tar.bz2 android_external_android-visualizer-40bb6f6c88a747de7c7486f84295c5638aa597c3.zip |
Refactor link code into VisualizerView
Diffstat (limited to 'src/com/pheelicks/visualizer/VisualizerView.java')
-rw-r--r-- | src/com/pheelicks/visualizer/VisualizerView.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/com/pheelicks/visualizer/VisualizerView.java b/src/com/pheelicks/visualizer/VisualizerView.java index 1ef50ff..8bdf30d 100644 --- a/src/com/pheelicks/visualizer/VisualizerView.java +++ b/src/com/pheelicks/visualizer/VisualizerView.java @@ -10,6 +10,7 @@ import android.graphics.Paint; import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; +import android.media.MediaPlayer; import android.media.audiofx.Visualizer; import android.util.AttributeSet; import android.view.View; @@ -29,6 +30,7 @@ public class VisualizerView extends View { private byte[] mBytes; private byte[] mFFTBytes; private Rect mRect = new Rect(); + private Visualizer mVisualizer; private Paint mFlashPaint = new Paint(); private Paint mFadePaint = new Paint(); @@ -59,6 +61,64 @@ public class VisualizerView extends View { } /** + * Links the visualizer to a player + * @param player - MediaPlayer instance to link to + */ + public void link(MediaPlayer player) + { + if(player == null) + { + throw new NullPointerException("Cannot link to null MediaPlayer"); + } + + // 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) + { + updateVisualizer(bytes); + } + + @Override + public void onFftDataCapture(Visualizer visualizer, byte[] bytes, + int samplingRate) + { + updateVisualizerFFT(bytes); + } + }; + + mVisualizer.setDataCaptureListener(captureListener, + Visualizer.getMaxCaptureRate() / 2, true, true); + + // Enabled Visualizer and disable when we're done with the stream + mVisualizer.setEnabled(true); + player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() + { + @Override + public void onCompletion(MediaPlayer mediaPlayer) + { + mVisualizer.setEnabled(false); + } + }); + } + + /** + * Call to release the resources used by VisualizerView. Like with the + * MediaPlayer it is good practice to call this method + */ + public void release() + { + mVisualizer.release(); + } + + + /** * Pass data to the visualizer. Typically this will be obtained from the * Android Visualizer.OnDataCaptureListener call back. See * {@link Visualizer.OnDataCaptureListener#onWaveFormDataCapture } |