Skip to content

Commit

Permalink
+ added renderer builder
Browse files Browse the repository at this point in the history
* fixed releasing resources issue
  • Loading branch information
Iojjj committed Mar 25, 2016
1 parent f95bafa commit e25e6cc
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 10 deletions.
2 changes: 1 addition & 1 deletion library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@ dependencies {
compile 'com.android.support:appcompat-v7:23.2.0'
}

apply from: './gradle-mvn-push.gradle'
//apply from: './gradle-mvn-push.gradle'
7 changes: 0 additions & 7 deletions library/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cleveroad.audiovisualization">

<application
android:allowBackup="true"
android:label="@string/av_app_name"
android:supportsRtl="true"
>

</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;

/**
* Audio visualization view implementation for OpenGL.
Expand Down Expand Up @@ -352,4 +353,66 @@ public GLAudioVisualizationView build() {
return new GLAudioVisualizationView(this);
}
}

public static class RendererBuilder {

private final Builder builder;
private GLSurfaceView glSurfaceView;
private DbmHandler handler;

public RendererBuilder(@NonNull Builder builder) {
this.builder = builder;
}

public RendererBuilder handler(DbmHandler handler) {
this.handler = handler;
return this;
}

public RendererBuilder glSurfaceView(@NonNull GLSurfaceView glSurfaceView) {
this.glSurfaceView = glSurfaceView;
return this;
}

public GLSurfaceView.Renderer build() {
final GLRenderer renderer = new GLRenderer(builder.context, new Configuration(builder));
final InnerAudioVisualization audioVisualization = new InnerAudioVisualization() {
@Override
public void startRendering() {
if (glSurfaceView.getRenderMode() != RENDERMODE_CONTINUOUSLY) {
glSurfaceView.setRenderMode(RENDERMODE_CONTINUOUSLY);
Log.d("TEST", "startRendering");
}
}

@Override
public void stopRendering() {
if (glSurfaceView.getRenderMode() != RENDERMODE_WHEN_DIRTY) {
glSurfaceView.setRenderMode(RENDERMODE_WHEN_DIRTY);
Log.d("TEST", "stopRendering");
}
}

@Override
public void calmDownListener(@Nullable CalmDownListener calmDownListener) {

}

@Override
public void onDataReceived(float[] dBmArray, float[] ampsArray) {
Log.d("TEST", "onDataReceived");
renderer.onDataReceived(dBmArray, ampsArray);
}
};
renderer.calmDownListener(new CalmDownListener() {
@Override
public void onCalmedDown() {
Log.d("TEST", "calmDown");
audioVisualization.stopRendering();
}
});
handler.setUp(audioVisualization, builder.layersCount);
return renderer;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@ public void onPause() {
super.onPause();
}

@Override
public void release() {
super.release();
visualizerWrapper.release();
}

@Override
public void onCompletion(MediaPlayer mp) {
calmDownAndStopRendering();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.cleveroad.audiovisualization;

import android.media.audiofx.Visualizer;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.util.Log;

/**
* Wrapper for visualizer.
Expand All @@ -12,6 +14,7 @@ class VisualizerWrapper {

public VisualizerWrapper(int audioSessionId, @NonNull final OnFftDataCaptureListener onFftDataCaptureListener) {
visualizer = new Visualizer(audioSessionId);
visualizer.setEnabled(false);
visualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
visualizer.setDataCaptureListener(new Visualizer.OnDataCaptureListener() {
@Override
Expand All @@ -31,8 +34,16 @@ public void release() {
visualizer = null;
}

public void setEnabled(boolean enabled) {
visualizer.setEnabled(enabled);
public void setEnabled(final boolean enabled) {
if (visualizer.getEnabled() != enabled) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
int res = visualizer.setEnabled(enabled);
Log.d("TEST", "result: " + res);
}
}, 500);
}
}

public interface OnFftDataCaptureListener {
Expand Down

0 comments on commit e25e6cc

Please sign in to comment.