aboutsummaryrefslogtreecommitdiff
path: root/src/github/daneren2005/dsub/view/VisualizerView.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/github/daneren2005/dsub/view/VisualizerView.java')
-rw-r--r--src/github/daneren2005/dsub/view/VisualizerView.java135
1 files changed, 0 insertions, 135 deletions
diff --git a/src/github/daneren2005/dsub/view/VisualizerView.java b/src/github/daneren2005/dsub/view/VisualizerView.java
deleted file mode 100644
index aa921930..00000000
--- a/src/github/daneren2005/dsub/view/VisualizerView.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- This file is part of Subsonic.
-
- Subsonic is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Subsonic is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
-
- Copyright 2011 (C) Sindre Mehus
- */
-package github.daneren2005.dsub.view;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.media.audiofx.Visualizer;
-import android.view.View;
-import github.daneren2005.dsub.audiofx.VisualizerController;
-import github.daneren2005.dsub.domain.PlayerState;
-import github.daneren2005.dsub.service.DownloadService;
-
-/**
- * A simple class that draws waveform data received from a
- * {@link Visualizer.OnDataCaptureListener#onWaveFormDataCapture}
- *
- * @author Sindre Mehus
- * @version $Id$
- */
-public class VisualizerView extends View {
-
- private static final int PREFERRED_CAPTURE_RATE_MILLIHERTZ = 20000;
-
- private final Paint paint = new Paint();
-
- private byte[] data;
- private float[] points;
- private boolean active = false;
-
- public VisualizerView(Context context) {
- super(context);
-
- paint.setStrokeWidth(2f);
- paint.setAntiAlias(true);
- paint.setColor(Color.rgb(51, 181, 229));
- }
-
- public boolean isActive() {
- return active;
- }
-
- public void setActive(boolean active) {
- this.active = active;
- VisualizerController visualizerController = getVizualiser();
- Visualizer visualizer = visualizerController == null ? null : visualizerController.getVisualizer();
- if (visualizer == null) {
- this.active = false;
- return;
- }
-
- int captureRate = Math.min(PREFERRED_CAPTURE_RATE_MILLIHERTZ, Visualizer.getMaxCaptureRate());
- if (active) {
- visualizer.setDataCaptureListener(new Visualizer.OnDataCaptureListener() {
- @Override
- public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) {
- updateVisualizer(waveform);
- }
-
- @Override
- public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) {
- }
- }, captureRate, true, false);
- } else {
- visualizer.setDataCaptureListener(null, captureRate, false, false);
- }
-
- visualizer.setEnabled(active);
- if(!active) {
- visualizerController.release();
- }
- invalidate();
- }
-
- private VisualizerController getVizualiser() {
- DownloadService downloadService = DownloadService.getInstance();
- VisualizerController visualizerController = downloadService == null ? null : downloadService.getVisualizerController();
- return visualizerController;
- }
-
- private void updateVisualizer(byte[] waveform) {
- this.data = waveform;
- invalidate();
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
-
- if (!active) {
- return;
- }
- DownloadService downloadService = DownloadService.getInstance();
- if (downloadService != null && downloadService.getPlayerState() != PlayerState.STARTED) {
- return;
- }
-
- if (data == null) {
- return;
- }
-
- if (points == null || points.length < data.length * 4) {
- points = new float[data.length * 4];
- }
-
- int w = getWidth();
- int h = getHeight();
-
- for (int i = 0; i < data.length - 1; i++) {
- points[i * 4] = w * i / (data.length - 1);
- points[i * 4 + 1] = h / 2 + ((byte) (data[i] + 128)) * (h / 2) / 128;
- points[i * 4 + 2] = w * (i + 1) / (data.length - 1);
- points[i * 4 + 3] = h / 2 + ((byte) (data[i + 1] + 128)) * (h / 2) / 128;
- }
-
- canvas.drawLines(points, paint);
- }
-}