aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/layout-land/download.xml15
-rw-r--r--res/layout-large-land/download.xml14
-rw-r--r--res/layout-port/download.xml14
-rw-r--r--res/values-de/strings.xml2
-rw-r--r--res/values-es/strings.xml2
-rw-r--r--res/values-fr/strings.xml2
-rw-r--r--res/values-hu/strings.xml2
-rw-r--r--res/values-ru/strings.xml2
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/github/daneren2005/dsub/audiofx/AudioEffectsController.java13
-rw-r--r--src/github/daneren2005/dsub/audiofx/VisualizerController.java103
-rw-r--r--src/github/daneren2005/dsub/fragments/NowPlayingFragment.java46
-rw-r--r--src/github/daneren2005/dsub/service/DownloadService.java21
-rw-r--r--src/github/daneren2005/dsub/util/Constants.java1
-rw-r--r--src/github/daneren2005/dsub/view/VisualizerView.java135
15 files changed, 0 insertions, 374 deletions
diff --git a/res/layout-land/download.xml b/res/layout-land/download.xml
index 7dc852e1..e97db866 100644
--- a/res/layout-land/download.xml
+++ b/res/layout-land/download.xml
@@ -41,16 +41,6 @@
android:background="@android:color/transparent">
<LinearLayout
- android:id="@+id/download_visualizer_view_layout"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="60dip"
- android:layout_marginLeft="12dip"
- android:layout_marginRight="12dip"
- android:layout_gravity="center_horizontal"
- android:layout_above="@+id/download_other_controls_wrapper"/>
-
- <LinearLayout
android:id="@+id/download_other_controls_wrapper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -69,11 +59,6 @@
style="@style/DownloadActionImageButton"
android:src="?attr/rating_bad"/>
- <Button
- android:id="@+id/download_visualizer"
- android:text="VIS"
- style="@style/DownloadActionButton"/>
-
<ImageButton
android:id="@+id/download_star"
style="@style/DownloadActionImageButton"
diff --git a/res/layout-large-land/download.xml b/res/layout-large-land/download.xml
index 89fa08e5..18b560bc 100644
--- a/res/layout-large-land/download.xml
+++ b/res/layout-large-land/download.xml
@@ -44,15 +44,6 @@
android:orientation="vertical">
<LinearLayout
- android:id="@+id/download_visualizer_view_layout"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="60dip"
- android:layout_marginLeft="12dip"
- android:layout_marginRight="12dip"
- android:layout_above="@+id/download_other_controls_layout"/>
-
- <LinearLayout
android:id="@+id/download_other_controls_layout"
android:orientation="horizontal"
android:layout_width="wrap_content"
@@ -65,11 +56,6 @@
style="@style/DownloadActionImageButton"
android:src="?attr/rating_bad"/>
- <Button
- android:id="@+id/download_visualizer"
- android:text="VIS"
- style="@style/DownloadActionButton"/>
-
<ImageButton
android:id="@+id/download_star"
style="@style/DownloadActionImageButton"
diff --git a/res/layout-port/download.xml b/res/layout-port/download.xml
index 916f3f25..b7d047c6 100644
--- a/res/layout-port/download.xml
+++ b/res/layout-port/download.xml
@@ -60,11 +60,6 @@
style="@style/DownloadActionImageButton"
android:src="@drawable/ic_action_rating_bad_dark"/>
- <Button
- android:id="@+id/download_visualizer"
- android:text="VIS"
- style="@style/DownloadActionButton"/>
-
<ImageButton
android:id="@+id/download_star"
style="@style/DownloadActionImageButton"
@@ -82,15 +77,6 @@
</LinearLayout>
</LinearLayout>
</RelativeLayout>
-
- <LinearLayout
- android:id="@+id/download_visualizer_view_layout"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="60dip"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_gravity="center_horizontal|bottom"/>
</FrameLayout>
<TextView
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index a9362206..ebfe7377 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -191,8 +191,6 @@
<string name="download.repeat_off">Keine Wiederholung</string>
<string name="download.repeat_all">Wiederhole alle</string>
<string name="download.repeat_single">Aktuelles Lied wiederholen</string>
- <string name="download.visualizer_on">Visualisierung aktiviert.</string>
- <string name="download.visualizer_off">Visualisierung deaktiviert.</string>
<string name="download.jukebox_on">Fernbedienung aktiviert. Musik wird auf dem Computer abgespielt.</string>
<string name="download.jukebox_off">Fernbedienung deaktiviert. Musik wird auf dem Telefon abgespielt.</string>
<string name="download.jukebox_volume">Lautstärke</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 43396da8..6364bf72 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -186,8 +186,6 @@
<string name="download.repeat_off">Repetir off</string>
<string name="download.repeat_all">Repetir todo</string>
<string name="download.repeat_single">Repetir canción</string>
- <string name="download.visualizer_on">Visualizador encendido.</string>
- <string name="download.visualizer_off">Visualizador apagado.</string>
<string name="download.jukebox_on">Control remoto encendido. La música se está reproduciendo en el ordenador.</string>
<string name="download.jukebox_off">Control remoto apagado. La música se está reproduciendo en el dispositivo móvil.</string>
<string name="download.jukebox_volume">Volumen remoto</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index b72e3f9a..ab4c187d 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -191,8 +191,6 @@
<string name="download.repeat_off">Répéter inactif</string>
<string name="download.repeat_all">Répéter tout</string>
<string name="download.repeat_single">Répéter titre</string>
- <string name="download.visualizer_on">Activer visualisation.</string>
- <string name="download.visualizer_off">Désactiver visualisation.</string>
<string name="download.jukebox_on">Télécommande activée. La musique est diffusée sur l\'ordinateur.</string>
<string name="download.jukebox_off">Télécommande désactivée. La musique est diffusée sur le mobile.</string>
<string name="download.jukebox_volume">Volume distant</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index cd8f9dfd..80d509be 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -191,8 +191,6 @@
<string name="download.repeat_off">Ismétlés ki</string>
<string name="download.repeat_all">Összes ismétlése</string>
<string name="download.repeat_single">Dal ismétlése</string>
- <string name="download.visualizer_on">Visualizer bekapcsolva.</string>
- <string name="download.visualizer_off">Visualizer kikapcsolva.</string>
<string name="download.jukebox_on">Távvezérlés bekapcsolása. A zenelejátszás a számítógépen történik.</string>
<string name="download.jukebox_off">Távvezérlés kikapcsolása. A zenelejátszás az eszközön történik.</string>
<string name="download.jukebox_volume">Hangerő távvezérlése</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 1888bf5f..9e9bc211 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -124,8 +124,6 @@
<string name="download.repeat_off">Повторение отключено</string>
<string name="download.repeat_all">Повторять все</string>
<string name="download.repeat_single">Повторять композицию</string>
- <string name="download.visualizer_on">Визуализация включена</string>
- <string name="download.visualizer_off">Визуализация отключена</string>
<string name="download.jukebox_on">Удаленное управление включено. Музыка воспроизводится на компьютере.</string>
<string name="download.jukebox_off">Удаленное управление отключено. Музыка воспроизводится на устройстве.</string>
<string name="download.jukebox_volume">Удаленное управление громкостью</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 91d0435d..ff1e5a88 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -191,8 +191,6 @@
<string name="download.repeat_off">Repeat off</string>
<string name="download.repeat_all">Repeat all</string>
<string name="download.repeat_single">Repeat song</string>
- <string name="download.visualizer_on">Turned on visualizer.</string>
- <string name="download.visualizer_off">Turned off visualizer.</string>
<string name="download.jukebox_on">Turned on remote control. Music is played on the computer.</string>
<string name="download.jukebox_off">Turned off remote control. Music is played on the phone.</string>
<string name="download.jukebox_volume">Remote volume</string>
diff --git a/src/github/daneren2005/dsub/audiofx/AudioEffectsController.java b/src/github/daneren2005/dsub/audiofx/AudioEffectsController.java
index f53a4dff..1933bd64 100644
--- a/src/github/daneren2005/dsub/audiofx/AudioEffectsController.java
+++ b/src/github/daneren2005/dsub/audiofx/AudioEffectsController.java
@@ -34,7 +34,6 @@ public class AudioEffectsController {
private boolean available = false;
private EqualizerController equalizerController;
- private VisualizerController visualizerController;
public AudioEffectsController(Context context, int audioSessionId) {
this.context = context;
@@ -53,9 +52,6 @@ public class AudioEffectsController {
if(equalizerController != null) {
equalizerController.release();
}
- if(visualizerController != null) {
- visualizerController.release();
- }
}
public EqualizerController getEqualizerController() {
@@ -69,14 +65,5 @@ public class AudioEffectsController {
}
return equalizerController;
}
- public VisualizerController getVisualizerController() {
- if (available && visualizerController == null) {
- visualizerController = new VisualizerController(context, audioSessionId);
- if (!visualizerController.isAvailable()) {
- visualizerController = null;
- }
- }
- return visualizerController;
- }
}
diff --git a/src/github/daneren2005/dsub/audiofx/VisualizerController.java b/src/github/daneren2005/dsub/audiofx/VisualizerController.java
deleted file mode 100644
index 92e3712c..00000000
--- a/src/github/daneren2005/dsub/audiofx/VisualizerController.java
+++ /dev/null
@@ -1,103 +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.audiofx;
-
-import android.content.Context;
-import android.media.audiofx.Visualizer;
-import android.util.Log;
-
-/**
- * Backward-compatible wrapper for {@link Visualizer}, which is API Level 9.
- *
- * @author Sindre Mehus
- * @version $Id$
- */
-public class VisualizerController {
-
- private static final String TAG = VisualizerController.class.getSimpleName();
- private static final int PREFERRED_CAPTURE_SIZE = 128; // Must be a power of two.
-
- private final Context context;
- private Visualizer visualizer;
- private boolean released = false;
- private int audioSessionId = 0;
-
- // Class initialization fails when this throws an exception.
- static {
- try {
- Class.forName("android.media.audiofx.Visualizer");
- } catch (Exception ex) {
- throw new RuntimeException(ex);
- }
- }
-
- /**
- * Throws an exception if the {@link Visualizer} class is not available.
- */
- public static void checkAvailable() throws Throwable {
- // Calling here forces class initialization.
- }
-
- public VisualizerController(Context context, int audioSessionId) {
- this.context = context;
- try {
- this.audioSessionId = audioSessionId;
- visualizer = new Visualizer(audioSessionId);
- } catch (Throwable x) {
- Log.w(TAG, "Failed to create visualizer.", x);
- }
-
- if (visualizer != null) {
- int[] captureSizeRange = Visualizer.getCaptureSizeRange();
- int captureSize = Math.max(PREFERRED_CAPTURE_SIZE, captureSizeRange[0]);
- captureSize = Math.min(captureSize, captureSizeRange[1]);
- visualizer.setCaptureSize(captureSize);
- }
- }
-
- public boolean isAvailable() {
- return visualizer != null;
- }
-
- public boolean isEnabled() {
- return isAvailable() && visualizer.getEnabled();
- }
-
- public void release() {
- if (isAvailable()) {
- visualizer.release();
- released = true;
- }
- }
-
- public Visualizer getVisualizer() {
- if(released) {
- released = false;
- try {
- visualizer = new Visualizer(audioSessionId);
- } catch (Throwable x) {
- visualizer = null;
- Log.w(TAG, "Failed to create visualizer.", x);
- }
- }
-
- return visualizer;
- }
-}
-
diff --git a/src/github/daneren2005/dsub/fragments/NowPlayingFragment.java b/src/github/daneren2005/dsub/fragments/NowPlayingFragment.java
index 150c11b3..c087df5a 100644
--- a/src/github/daneren2005/dsub/fragments/NowPlayingFragment.java
+++ b/src/github/daneren2005/dsub/fragments/NowPlayingFragment.java
@@ -71,7 +71,6 @@ import github.daneren2005.dsub.view.DownloadFileAdapter;
import github.daneren2005.dsub.view.FadeOutAnimation;
import github.daneren2005.dsub.view.UpdateView;
import github.daneren2005.dsub.util.Util;
-import github.daneren2005.dsub.view.VisualizerView;
import static github.daneren2005.dsub.domain.MusicDirectory.Entry;
import static github.daneren2005.dsub.domain.PlayerState.*;
@@ -111,7 +110,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
private View stopButton;
private View startButton;
private ImageButton repeatButton;
- private Button visualizerButton;
private View toggleListButton;
private ImageButton starButton;
private ImageButton bookmarkButton;
@@ -123,7 +121,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
private long currentRevision;
private int swipeDistance;
private int swipeVelocity;
- private VisualizerView visualizerView;
private ScheduledFuture<?> hideControlsFuture;
private List<DownloadFile> songList;
private DownloadFileAdapter songListAdapter;
@@ -186,11 +183,9 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
stopButton =rootView.findViewById(R.id.download_stop);
startButton =rootView.findViewById(R.id.download_start);
repeatButton = (ImageButton)rootView.findViewById(R.id.download_repeat);
- visualizerButton = (Button)rootView.findViewById(R.id.download_visualizer);
bookmarkButton = (ImageButton) rootView.findViewById(R.id.download_bookmark);
rateBadButton = (ImageButton) rootView.findViewById(R.id.download_rating_bad);
rateGoodButton = (ImageButton) rootView.findViewById(R.id.download_rating_good);
- LinearLayout visualizerViewLayout = (LinearLayout)rootView.findViewById(R.id.download_visualizer_view_layout);
toggleListButton =rootView.findViewById(R.id.download_toggle_list);
starButton = (ImageButton)rootView.findViewById(R.id.download_star);
@@ -219,7 +214,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
pauseButton.setOnTouchListener(touchListener);
stopButton.setOnTouchListener(touchListener);
startButton.setOnTouchListener(touchListener);
- visualizerButton.setOnTouchListener(touchListener);
bookmarkButton.setOnTouchListener(touchListener);
rateBadButton.setOnTouchListener(touchListener);
rateGoodButton.setOnTouchListener(touchListener);
@@ -369,23 +363,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
}
});
- visualizerButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- boolean active = !visualizerView.isActive();
- visualizerView.setActive(active);
- boolean isActive = visualizerView.isActive();
- getDownloadService().setShowVisualization(isActive);
- updateButtons();
- if(active == isActive) {
- Util.toast(context, active ? R.string.download_visualizer_on : R.string.download_visualizer_off);
- } else {
- Util.toast(context, "Failed to start visualizer. Try restarting.");
- }
- setControlsVisible(true);
- }
- });
-
bookmarkButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -519,18 +496,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
downloadService.setShufflePlayEnabled(true);
}
- boolean equalizerAvailable = downloadService != null && downloadService.getEqualizerAvailable();
-
- if (!equalizerAvailable) {
- visualizerButton.setVisibility(View.GONE);
- } else {
- visualizerView = new VisualizerView(context);
- if(downloadService.getShowVisualization()) {
- visualizerView.setActive(true);
- }
- visualizerViewLayout.addView(visualizerView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
- }
-
if(Build.MODEL.equals("Nexus 4")) {
View slider = rootView.findViewById(R.id.download_slider);
slider.setPadding(0, 0, 0, 0);
@@ -842,10 +807,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
context.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
- if (visualizerView != null && downloadService != null && downloadService.getShowVisualization()) {
- visualizerView.setActive(true);
- }
-
updateButtons();
if(currentPlaying == null && downloadService != null && currentPlaying == downloadService.getCurrentPlaying()) {
@@ -860,9 +821,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
public void onPause() {
super.onPause();
executorService.shutdown();
- if (visualizerView != null && visualizerView.isActive()) {
- visualizerView.setActive(false);
- }
if(getDownloadService() != null) {
getDownloadService().stopRemoteScan();
}
@@ -918,10 +876,6 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
if(context == null) {
return;
}
-
- if (visualizerView != null) {
- visualizerButton.setTextColor(visualizerView.isActive() ? COLOR_BUTTON_ENABLED : COLOR_BUTTON_DISABLED);
- }
if(Util.isOffline(context)) {
bookmarkButton.setVisibility(View.GONE);
diff --git a/src/github/daneren2005/dsub/service/DownloadService.java b/src/github/daneren2005/dsub/service/DownloadService.java
index e5495bc2..b3198f3d 100644
--- a/src/github/daneren2005/dsub/service/DownloadService.java
+++ b/src/github/daneren2005/dsub/service/DownloadService.java
@@ -32,7 +32,6 @@ import static github.daneren2005.dsub.domain.PlayerState.STOPPED;
import github.daneren2005.dsub.R;
import github.daneren2005.dsub.audiofx.AudioEffectsController;
import github.daneren2005.dsub.audiofx.EqualizerController;
-import github.daneren2005.dsub.audiofx.VisualizerController;
import github.daneren2005.dsub.domain.Bookmark;
import github.daneren2005.dsub.domain.MusicDirectory;
import github.daneren2005.dsub.domain.PlayerState;
@@ -137,7 +136,6 @@ public class DownloadService extends Service {
private boolean downloadOngoing = false;
private AudioEffectsController effectsController;
- private boolean showVisualization;
private RemoteControlState remoteState = RemoteControlState.LOCAL;
private PositionCache positionCache;
private BufferProxy proxy;
@@ -187,10 +185,6 @@ public class DownloadService extends Service {
if(prefs.getBoolean(Constants.PREFERENCES_EQUALIZER_ON, false)) {
getEqualizerController();
}
- if(prefs.getBoolean(Constants.PREFERENCES_VISUALIZER_ON, false)) {
- getVisualizerController();
- showVisualization = true;
- }
mediaPlayerLooper = Looper.myLooper();
mediaPlayerHandler = new Handler(mediaPlayerLooper);
@@ -477,17 +471,6 @@ public class DownloadService extends Service {
editor.commit();
}
- public boolean getShowVisualization() {
- return showVisualization;
- }
-
- public void setShowVisualization(boolean showVisualization) {
- this.showVisualization = showVisualization;
- SharedPreferences.Editor editor = Util.getPreferences(this).edit();
- editor.putBoolean(Constants.PREFERENCES_VISUALIZER_ON, showVisualization);
- editor.commit();
- }
-
public synchronized DownloadFile forSong(MusicDirectory.Entry song) {
DownloadFile returnFile = null;
for (DownloadFile downloadFile : downloadList) {
@@ -1180,10 +1163,6 @@ public class DownloadService extends Service {
return effectsController.getEqualizerController();
}
- public VisualizerController getVisualizerController() {
- return effectsController.getVisualizerController();
- }
-
public MediaRouteSelector getRemoteSelector() {
return mediaRouter.getSelector();
}
diff --git a/src/github/daneren2005/dsub/util/Constants.java b/src/github/daneren2005/dsub/util/Constants.java
index 5fb872f2..48f0d2f3 100644
--- a/src/github/daneren2005/dsub/util/Constants.java
+++ b/src/github/daneren2005/dsub/util/Constants.java
@@ -108,7 +108,6 @@ public final class Constants {
public static final String PREFERENCES_KEY_SHUFFLE_GENRE = "genre";
public static final String PREFERENCES_KEY_KEEP_SCREEN_ON = "keepScreenOn";
public static final String PREFERENCES_EQUALIZER_ON = "equalizerOn";
- public static final String PREFERENCES_VISUALIZER_ON = "visualizerOn";
public static final String PREFERENCES_EQUALIZER_SETTINGS = "equalizerSettings";
public static final String PREFERENCES_KEY_PERSISTENT_NOTIFICATION = "persistentNotification";
public static final String PREFERENCES_KEY_GAPLESS_PLAYBACK = "gaplessPlayback";
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);
- }
-}