aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Palmer <felix.palmer@metaswitch.com>2011-12-04 20:27:21 -0800
committerFelix Palmer <felix.palmer@metaswitch.com>2011-12-04 20:34:52 -0800
commit464d7441ca821166619e4750e205a06845b0fe67 (patch)
tree64bc0e082b22229694421f1ab2ca98d10c733444
parent650eea7332c1181aba05f39b9b6826ec7ee3dc90 (diff)
downloadandroid_external_android-visualizer-464d7441ca821166619e4750e205a06845b0fe67.tar.gz
android_external_android-visualizer-464d7441ca821166619e4750e205a06845b0fe67.tar.bz2
android_external_android-visualizer-464d7441ca821166619e4750e205a06845b0fe67.zip
Move renderers to separate package & clean up
-rw-r--r--src/com/pheelicks/visualizer/VisualizerView.java92
-rw-r--r--src/com/pheelicks/visualizer/renderer/BarGraphRenderer.java (renamed from src/com/pheelicks/visualizer/BarGraphRenderer.java)5
-rw-r--r--src/com/pheelicks/visualizer/renderer/CircleRenderer.java (renamed from src/com/pheelicks/visualizer/CircleRenderer.java)5
-rw-r--r--src/com/pheelicks/visualizer/renderer/LineRenderer.java (renamed from src/com/pheelicks/visualizer/LineRenderer.java)5
-rw-r--r--src/com/pheelicks/visualizer/renderer/Renderer.java (renamed from src/com/pheelicks/visualizer/Renderer.java)5
5 files changed, 58 insertions, 54 deletions
diff --git a/src/com/pheelicks/visualizer/VisualizerView.java b/src/com/pheelicks/visualizer/VisualizerView.java
index 5a80797..1ef50ff 100644
--- a/src/com/pheelicks/visualizer/VisualizerView.java
+++ b/src/com/pheelicks/visualizer/VisualizerView.java
@@ -1,8 +1,5 @@
package com.pheelicks.visualizer;
-// WARNING!!! This file has more magic numbers in it than you could shake a
-// stick at
-
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
@@ -14,29 +11,28 @@ import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.media.audiofx.Visualizer;
-import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.View;
+import com.pheelicks.visualizer.renderer.BarGraphRenderer;
+import com.pheelicks.visualizer.renderer.CircleRenderer;
+import com.pheelicks.visualizer.renderer.LineRenderer;
+
/**
* A class that draws visualizations of data received from a
- * {@link Visualizer.OnDataCaptureListener#onWaveFormDataCapture }
+ * {@link Visualizer.OnDataCaptureListener#onWaveFormDataCapture } and
+ * {@link Visualizer.OnDataCaptureListener#onFftDataCapture }
*/
public class VisualizerView extends View {
private static final String TAG = "VisualizerView";
private byte[] mBytes;
private byte[] mFFTBytes;
- private float[] mPoints;
private Rect mRect = new Rect();
- private Paint mLinePaint = new Paint();
- private Paint mSpecialLinePaint = new Paint();
- private Paint mProgressLinePaint = new Paint();
private Paint mFlashPaint = new Paint();
private Paint mFadePaint = new Paint();
- // Usual BS of 3 constructors
public VisualizerView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs);
@@ -55,37 +51,43 @@ public class VisualizerView extends View {
private void init() {
mBytes = null;
-
- mProgressLinePaint.setStrokeWidth(4f);
- mProgressLinePaint.setAntiAlias(true);
- mProgressLinePaint.setColor(Color.argb(255, 22, 131, 255));
-
+ mFFTBytes = null;
mFlashPaint.setColor(Color.argb(122, 255, 255, 255));
-
mFadePaint.setColor(Color.argb(238, 255, 255, 255)); // Adjust alpha to change how quickly the image fades
mFadePaint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY));
}
+ /**
+ * Pass data to the visualizer. Typically this will be obtained from the
+ * Android Visualizer.OnDataCaptureListener call back. See
+ * {@link Visualizer.OnDataCaptureListener#onWaveFormDataCapture }
+ * @param bytes
+ */
public void updateVisualizer(byte[] bytes) {
mBytes = bytes;
invalidate();
}
+ /**
+ * Pass FFT data to the visualizer. Typically this will be obtained from the
+ * Android Visualizer.OnDataCaptureListener call back. See
+ * {@link Visualizer.OnDataCaptureListener#onFftDataCapture }
+ * @param bytes
+ */
+ public void updateVisualizerFFT(byte[] bytes) {
+ mFFTBytes = bytes;
+ invalidate();
+ }
+
boolean mFlash = false;
- long mFlashTime = 0;
- long mFlashPeriod = 4000;
+ /**
+ * Call this to make the visualizer flash. Useful for flashing at the start
+ * of a song/loop etc...
+ */
public void flash() {
mFlash = true;
- long now = SystemClock.currentThreadTimeMillis();
- mFlashPeriod = now - mFlashTime;
- mFlashTime = now;
- invalidate();
- }
-
- public void updateVisualizerFFT(byte[] bytes) {
- mFFTBytes = bytes;
invalidate();
}
@@ -101,17 +103,9 @@ public class VisualizerView extends View {
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
- if (mBytes == null) {
- return;
- }
-
- if (mPoints == null || mPoints.length < mBytes.length * 4) {
- mPoints = new float[mBytes.length * 4];
- }
-
+ // Create canvas & renderers once we're ready to draw
mRect.set(0, 0, getWidth(), getHeight());
-
if(mCanvasBitmap == null)
{
mCanvasBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Config.ARGB_8888);
@@ -119,6 +113,8 @@ public class VisualizerView extends View {
if(mCanvas == null)
{
mCanvas = new Canvas(mCanvasBitmap);
+
+ // Now that we have a Canvas, can create Renderers
Paint paint = new Paint();
paint.setStrokeWidth(50f);
paint.setAntiAlias(true);
@@ -149,22 +145,19 @@ public class VisualizerView extends View {
mLineRenderer = new LineRenderer(mCanvas, linePaint, lineFlashPaint, true);
}
-
-
-
- AudioData audioData = new AudioData(mBytes);
- mCircleRenderer.render(audioData, mRect);
- mLineRenderer.render(audioData, mRect);
-
- // FFT time!!!!
- if (mFFTBytes == null) {
- return;
+ if (mBytes != null) {
+ // Render all audio renderers
+ AudioData audioData = new AudioData(mBytes);
+ mCircleRenderer.render(audioData, mRect);
+ mLineRenderer.render(audioData, mRect);
}
- FFTData fftData = new FFTData(mFFTBytes);
-
- mBarGraphRendererTop.render(fftData, mRect);
- mBarGraphRendererBottom.render(fftData, mRect);
+ if (mFFTBytes != null) {
+ // Render all FFT renderers
+ FFTData fftData = new FFTData(mFFTBytes);
+ mBarGraphRendererTop.render(fftData, mRect);
+ mBarGraphRendererBottom.render(fftData, mRect);
+ }
// Fade out old contents
mCanvas.drawPaint(mFadePaint);
@@ -177,5 +170,4 @@ public class VisualizerView extends View {
canvas.drawBitmap(mCanvasBitmap, new Matrix(), null);
}
-
} \ No newline at end of file
diff --git a/src/com/pheelicks/visualizer/BarGraphRenderer.java b/src/com/pheelicks/visualizer/renderer/BarGraphRenderer.java
index f1531e9..6a92fc8 100644
--- a/src/com/pheelicks/visualizer/BarGraphRenderer.java
+++ b/src/com/pheelicks/visualizer/renderer/BarGraphRenderer.java
@@ -1,4 +1,7 @@
-package com.pheelicks.visualizer;
+package com.pheelicks.visualizer.renderer;
+
+import com.pheelicks.visualizer.AudioData;
+import com.pheelicks.visualizer.FFTData;
import android.graphics.Canvas;
import android.graphics.Paint;
diff --git a/src/com/pheelicks/visualizer/CircleRenderer.java b/src/com/pheelicks/visualizer/renderer/CircleRenderer.java
index 8cdae2c..4f25c46 100644
--- a/src/com/pheelicks/visualizer/CircleRenderer.java
+++ b/src/com/pheelicks/visualizer/renderer/CircleRenderer.java
@@ -1,4 +1,7 @@
-package com.pheelicks.visualizer;
+package com.pheelicks.visualizer.renderer;
+
+import com.pheelicks.visualizer.AudioData;
+import com.pheelicks.visualizer.FFTData;
import android.graphics.Canvas;
import android.graphics.Color;
diff --git a/src/com/pheelicks/visualizer/LineRenderer.java b/src/com/pheelicks/visualizer/renderer/LineRenderer.java
index 201a0a5..412ca6e 100644
--- a/src/com/pheelicks/visualizer/LineRenderer.java
+++ b/src/com/pheelicks/visualizer/renderer/LineRenderer.java
@@ -1,4 +1,7 @@
-package com.pheelicks.visualizer;
+package com.pheelicks.visualizer.renderer;
+
+import com.pheelicks.visualizer.AudioData;
+import com.pheelicks.visualizer.FFTData;
import android.graphics.Canvas;
import android.graphics.Color;
diff --git a/src/com/pheelicks/visualizer/Renderer.java b/src/com/pheelicks/visualizer/renderer/Renderer.java
index aa2a56b..f633089 100644
--- a/src/com/pheelicks/visualizer/Renderer.java
+++ b/src/com/pheelicks/visualizer/renderer/Renderer.java
@@ -1,4 +1,7 @@
-package com.pheelicks.visualizer;
+package com.pheelicks.visualizer.renderer;
+
+import com.pheelicks.visualizer.AudioData;
+import com.pheelicks.visualizer.FFTData;
import android.graphics.Canvas;
import android.graphics.Rect;