Skip to content

Commit 348bb37

Browse files
author
Felix Palmer
committed
Added (messy) Visualizer code
1 parent a92a175 commit 348bb37

File tree

5 files changed

+363
-1
lines changed

5 files changed

+363
-1
lines changed

AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,7 @@
2121
</intent-filter>
2222
</activity>
2323
</application>
24+
25+
<uses-permission android:name="android.permission.RECORD_AUDIO" />
2426

2527
</manifest>

res/drawable/bg.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
android:shape="rectangle">
5+
<gradient
6+
android:startColor="#acacac"
7+
android:centerColor="#4f4f4f"
8+
android:endColor="#3f3f3f"
9+
android:angle="-90">
10+
</gradient>
11+
</shape>

res/layout/main.xml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,21 @@
22
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
33
android:layout_width="fill_parent"
44
android:layout_height="fill_parent"
5+
android:background="@drawable/bg"
56
android:orientation="vertical" >
67

78
<FrameLayout
89
android:layout_width="fill_parent"
910
android:layout_height="0dp"
10-
android:layout_weight="1" >
11+
android:layout_margin="10dp"
12+
android:layout_weight="1"
13+
android:background="#000" >
14+
15+
<com.pheelicks.visualizer.VisualizerView
16+
android:id="@+id/visualizerView"
17+
android:layout_width="fill_parent"
18+
android:layout_height="fill_parent" >
19+
</com.pheelicks.visualizer.VisualizerView>
1120
</FrameLayout>
1221

1322
<LinearLayout

src/com/pheelicks/visualizer/VisualizerActivity.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import android.app.Activity;
44
import android.media.MediaPlayer;
5+
import android.media.audiofx.Visualizer;
56
import android.os.Bundle;
67
import android.view.View;
78

89
public class VisualizerActivity extends Activity {
910
private MediaPlayer mPlayer;
11+
private Visualizer mVisualizer;
1012

1113
/** Called when the activity is first created. */
1214
@Override
@@ -16,6 +18,55 @@ public void onCreate(Bundle savedInstanceState) {
1618

1719
mPlayer = MediaPlayer.create(this, R.raw.test);
1820
mPlayer.setLooping(true);
21+
22+
linkVisualizer(mPlayer);
23+
}
24+
25+
/**
26+
* Links the visualizer to a player
27+
* TODO Refactor this into visualizer
28+
* @param player
29+
*/
30+
private void linkVisualizer(MediaPlayer player)
31+
{
32+
33+
final VisualizerView visualizerView = (VisualizerView) findViewById(R.id.visualizerView);
34+
35+
// Create the Visualizer object and attach it to our media player.
36+
mVisualizer = new Visualizer(player.getAudioSessionId());
37+
mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
38+
39+
// Pass through Visualizer data to VisualizerView
40+
Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener()
41+
{
42+
@Override
43+
public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
44+
int samplingRate)
45+
{
46+
visualizerView.updateVisualizer(bytes);
47+
}
48+
49+
@Override
50+
public void onFftDataCapture(Visualizer visualizer, byte[] bytes,
51+
int samplingRate)
52+
{
53+
visualizerView.updateVisualizerFFT(bytes);
54+
}
55+
};
56+
57+
mVisualizer.setDataCaptureListener(captureListener,
58+
Visualizer.getMaxCaptureRate() / 2, true, true);
59+
60+
// Enabled Visualizer and disable when we're done with the stream
61+
mVisualizer.setEnabled(true);
62+
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
63+
{
64+
@Override
65+
public void onCompletion(MediaPlayer mediaPlayer)
66+
{
67+
mVisualizer.setEnabled(false);
68+
}
69+
});
1970
}
2071

2172
public void startPressed(View view)

0 commit comments

Comments
 (0)