summaryrefslogtreecommitdiff
path: root/src/com/android/systemui/pulse/VisualizerStreamHandler.java
diff options
context:
space:
mode:
authorezio84 <brabus84@gmail.com>2018-11-13 22:54:14 +0100
committerezio84 <brabus84@gmail.com>2018-11-13 22:54:14 +0100
commit9bc2002a3caa1f077852828b57dc6e446bd9eddd (patch)
tree11ac8fa570a0cdb6fe204bf7d3bd233b71d29e77 /src/com/android/systemui/pulse/VisualizerStreamHandler.java
parent28e9597a9f69cbf0401f35e474e058c632d5fb8e (diff)
Use offload thread (ExecutorService) to start pulsingHEADp9.0
when unlocking it's better to follow what Google does in Statusbar, offloading expensive operations from the main ui thread
Diffstat (limited to 'src/com/android/systemui/pulse/VisualizerStreamHandler.java')
-rw-r--r--src/com/android/systemui/pulse/VisualizerStreamHandler.java84
1 files changed, 46 insertions, 38 deletions
diff --git a/src/com/android/systemui/pulse/VisualizerStreamHandler.java b/src/com/android/systemui/pulse/VisualizerStreamHandler.java
index 7122627..cce27d7 100644
--- a/src/com/android/systemui/pulse/VisualizerStreamHandler.java
+++ b/src/com/android/systemui/pulse/VisualizerStreamHandler.java
@@ -28,6 +28,9 @@ import android.os.Handler;
import android.os.Message;
import android.util.Log;
+import com.android.systemui.Dependency;
+import com.android.systemui.UiOffloadThread;
+
public class VisualizerStreamHandler {
public interface Listener {
public void onStreamAnalyzed(boolean isValid);
@@ -60,6 +63,8 @@ public class VisualizerStreamHandler {
protected PulseController mController;
protected Listener mListener;
+ private final UiOffloadThread mUiOffloadThread;
+
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message m) {
@@ -85,6 +90,7 @@ public class VisualizerStreamHandler {
mContext = context;
mController = controller;
mListener = listener;
+ mUiOffloadThread = Dependency.get(UiOffloadThread.class);
}
/**
@@ -93,52 +99,54 @@ public class VisualizerStreamHandler {
* @param player - MediaPlayer instance to link to
*/
public final void link(int audioSessionId) {
- if (mVisualizer != null && audioSessionId != mAudioSessionId) {
- mVisualizer.setEnabled(false);
- mVisualizer.release();
- mVisualizer = null;
- }
- pause();
- resetAnalyzer();
- mAudioSessionId = audioSessionId;
-
- if (mVisualizer == null) {
- try {
- mVisualizer = new Visualizer(audioSessionId);
- } catch (Exception e) {
- Log.e(TAG, "Error enabling visualizer!", e);
- return;
+ mUiOffloadThread.submit(() -> {
+ if (mVisualizer != null && audioSessionId != mAudioSessionId) {
+ mVisualizer.setEnabled(false);
+ mVisualizer.release();
+ mVisualizer = null;
}
- mVisualizer.setEnabled(false);
- mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
+ pause();
+ resetAnalyzer();
+ mAudioSessionId = audioSessionId;
+
+ if (mVisualizer == null) {
+ try {
+ mVisualizer = new Visualizer(audioSessionId);
+ } catch (Exception e) {
+ Log.e(TAG, "Error enabling visualizer!", e);
+ return;
+ }
+ mVisualizer.setEnabled(false);
+ mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
+
+ Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener() {
+ @Override
+ public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
+ int samplingRate) {
+ if (ENABLE_WAVEFORM) {
+ analyze(bytes);
+ if (isValidStream() && !mIsPaused) {
+ mListener.onWaveFormUpdate(bytes);
+ }
+ }
+ }
- Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener() {
- @Override
- public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
- int samplingRate) {
- if (ENABLE_WAVEFORM) {
+ @Override
+ public void onFftDataCapture(Visualizer visualizer, byte[] bytes,
+ int samplingRate) {
analyze(bytes);
if (isValidStream() && !mIsPaused) {
- mListener.onWaveFormUpdate(bytes);
+ mListener.onFFTUpdate(bytes);
}
}
- }
+ };
- @Override
- public void onFftDataCapture(Visualizer visualizer, byte[] bytes,
- int samplingRate) {
- analyze(bytes);
- if (isValidStream() && !mIsPaused) {
- mListener.onFFTUpdate(bytes);
- }
- }
- };
-
- mVisualizer.setDataCaptureListener(captureListener,
- (int) (Visualizer.getMaxCaptureRate() * 0.75), ENABLE_WAVEFORM, true);
+ mVisualizer.setDataCaptureListener(captureListener,
+ (int) (Visualizer.getMaxCaptureRate() * 0.75), ENABLE_WAVEFORM, true);
- }
- mVisualizer.setEnabled(true);
+ }
+ mVisualizer.setEnabled(true);
+ });
}
public final void unlink() {