package com.kekland.fastfouriertest; import android.Manifest; import android.content.pm.PackageManager; import android.media.AudioManager; import android.os.CountDownTimer; import android.os.Handler; import android.support.annotation.Nullable; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import com.jjoe64.graphview.GraphView; import com.jjoe64.graphview.series.DataPoint; import com.jjoe64.graphview.series.LineGraphSeries; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { final int PERMISSION_REQUEST_CALLBACK = 25; Button toggleThreadButton; TextView peakText; ProgressBar volumeProgress; GraphView dataGraph; AudioRecorderThread thread; int indexOfThreadRun = 0; int indexToUpdateGraph = 1; FastFourierTransform fastFourierTransform = new FastFourierTransform(1024, 44100); public void toggleThread() { if(thread == null) { if (ContextCompat.checkSelfPermission(this, != PackageManager.PERMISSION_GRANTED) { // Permission is not granted ActivityCompat.requestPermissions(this, PERMISSION_REQUEST_CALLBACK); } else { thread = new AudioRecorderThread(new AudioRecorderInterface() { @Override public void onDataReceive(final float[] buffer) { @Override public void run() { //Make sure that everything runs in 30fps indexOfThreadRun++; if (indexOfThreadRun % indexToUpdateGraph == 0) { //Evaluate Fourier Transform fastFourierTransform.forward(buffer); //Get the volume for (float sample : buffer) { maxAmplitude = (sample > maxAmplitude) ? sample : maxAmplitude; } float[] transformValues = new float[fastFourierTransform.specSize()]; float transformMax = -1; float transformAvg = 0f; for (int i = 0; i < transformValues.length; i++) { float freq = (i / 1024f) * 44100f; transformValues[i] = fastFourierTransform.getBand(i) * invVolume; transformMax = (transformValues[i] > transformMax) ? transformValues[i] : transformMax; transformAvg += transformValues[i]; } transformAvg /= transformValues.length; //Apply low pass filter below avg value /*for(int i =0; i < transformValues.length; i++) { if(transformValues[i] < transformAvg) { transformValues[i] = 0; } } */ DataPoint[] dataPoints = new DataPoint[transformValues.length]; for (int i = 0; i < transformValues.length; i++) { dataPoints[i] = new DataPoint((i / 1024f) * 44100f, transformValues[i]); } dataGraph.removeAllSeries(); LineGraphSeries<DataPoint> series = new LineGraphSeries<>(dataPoints); dataGraph.addSeries(series); //Find peaks List<Integer> peaks = new ArrayList<>(); for (int i = 0; i < transformValues.length - 2; i++) { float slopeFirst = transformValues[i + 1] - transformValues[i]; float slopeSecond = transformValues[i + 2] - transformValues[i + 1]; float slopeAvg = (slopeFirst - slopeSecond) / 2f; if (slopeFirst * slopeSecond <= 0) { // changed sign? if (slopeAvg > transformMax / 6f && transformValues[i + 1] > transformAvg) { peaks.add(i + 1); } } } //Fill String data about peaks final AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); StringBuilder peakData = new StringBuilder("Peaking at: \n"); boolean lowPass = false, midPass = false; if (freq <= 55 && freq >= 35) { lowPass = true; } if (freq <= 56 && freq >= 34) { midPass = true; } peakData.append(freq.toString()); peakData.append("Hz\n"); } peakText.setText(peakData.toString()); if (lowPass && midPass) { audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, -100, AudioManager.FLAG_SHOW_UI); final Handler handler = new Handler(); @Override public void run() { // Do something after 5s = 5000ms audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, 100, AudioManager.FLAG_SHOW_UI); } }, 2000); } } } }); } }, 1, 44100); } toggleThreadButton.setText("Stop Thread"); } else { thread.close(); thread = null; toggleThreadButton.setText("Start Thread"); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toggleThreadButton = findViewById(R.id.mainActivityButtonStartThread); peakText = findViewById(R.id.mainActivityTextPeak); volumeProgress = findViewById(R.id.mainActivityProgressVolume); dataGraph = findViewById(R.id.mainActivityGraphData); @Override toggleThread(); } }); } @Override public void onRequestPermissionsResult(int requestCode, switch (requestCode) { case PERMISSION_REQUEST_CALLBACK: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { toggleThread(); } else { Toast.makeText(this, "Permission was not granted", Toast.LENGTH_SHORT).show(); } } } } @Override protected void onStop() { thread.close(); super.onStop(); } }
Standard input is empty
Main.java:29: error: class MainActivity is public, should be declared in a file named MainActivity.java
public class MainActivity extends AppCompatActivity {
^
Main.java:3: error: package android does not exist
import android.Manifest;
^
Main.java:4: error: package android.content.pm does not exist
import android.content.pm.PackageManager;
^
Main.java:5: error: package android.media does not exist
import android.media.AudioManager;
^
Main.java:6: error: package android.os does not exist
import android.os.CountDownTimer;
^
Main.java:7: error: package android.os does not exist
import android.os.Handler;
^
Main.java:8: error: package android.support.annotation does not exist
import android.support.annotation.Nullable;
^
Main.java:9: error: package android.support.v4.app does not exist
import android.support.v4.app.ActivityCompat;
^
Main.java:10: error: package android.support.v4.content does not exist
import android.support.v4.content.ContextCompat;
^
Main.java:11: error: package android.support.v7.app does not exist
import android.support.v7.app.AppCompatActivity;
^
Main.java:12: error: package android.os does not exist
import android.os.Bundle;
^
Main.java:13: error: package android.view does not exist
import android.view.View;
^
Main.java:14: error: package android.widget does not exist
import android.widget.Button;
^
Main.java:15: error: package android.widget does not exist
import android.widget.ProgressBar;
^
Main.java:16: error: package android.widget does not exist
import android.widget.TextView;
^
Main.java:17: error: package android.widget does not exist
import android.widget.Toast;
^
Main.java:19: error: package com.jjoe64.graphview does not exist
import com.jjoe64.graphview.GraphView;
^
Main.java:20: error: package com.jjoe64.graphview.series does not exist
import com.jjoe64.graphview.series.DataPoint;
^
Main.java:21: error: package com.jjoe64.graphview.series does not exist
import com.jjoe64.graphview.series.LineGraphSeries;
^
Main.java:29: error: cannot find symbol
public class MainActivity extends AppCompatActivity {
^
symbol: class AppCompatActivity
Main.java:33: error: cannot find symbol
Button toggleThreadButton;
^
symbol: class Button
location: class MainActivity
Main.java:34: error: cannot find symbol
TextView peakText;
^
symbol: class TextView
location: class MainActivity
Main.java:35: error: cannot find symbol
ProgressBar volumeProgress;
^
symbol: class ProgressBar
location: class MainActivity
Main.java:36: error: cannot find symbol
GraphView dataGraph;
^
symbol: class GraphView
location: class MainActivity
Main.java:38: error: cannot find symbol
AudioRecorderThread thread;
^
symbol: class AudioRecorderThread
location: class MainActivity
Main.java:42: error: cannot find symbol
FastFourierTransform fastFourierTransform = new FastFourierTransform(1024, 44100);
^
symbol: class FastFourierTransform
location: class MainActivity
Main.java:162: error: cannot find symbol
protected void onCreate(Bundle savedInstanceState) {
^
symbol: class Bundle
location: class MainActivity
Main.java:42: error: cannot find symbol
FastFourierTransform fastFourierTransform = new FastFourierTransform(1024, 44100);
^
symbol: class FastFourierTransform
location: class MainActivity
Main.java:47: error: package Manifest does not exist
Manifest.permission.RECORD_AUDIO)
^
Main.java:46: error: cannot find symbol
if (ContextCompat.checkSelfPermission(this,
^
symbol: variable ContextCompat
location: class MainActivity
Main.java:48: error: cannot find symbol
!= PackageManager.PERMISSION_GRANTED) {
^
symbol: variable PackageManager
location: class MainActivity
Main.java:52: error: package Manifest does not exist
new String[]{Manifest.permission.RECORD_AUDIO},
^
Main.java:51: error: cannot find symbol
ActivityCompat.requestPermissions(this,
^
symbol: variable ActivityCompat
location: class MainActivity
Main.java:56: error: cannot find symbol
thread = new AudioRecorderThread(new AudioRecorderInterface() {
^
symbol: class AudioRecorderThread
location: class MainActivity
Main.java:56: error: cannot find symbol
thread = new AudioRecorderThread(new AudioRecorderInterface() {
^
symbol: class AudioRecorderInterface
location: class MainActivity
Main.java:161: error: method does not override or implement a method from a supertype
@Override
^
Main.java:163: error: cannot find symbol
super.onCreate(savedInstanceState);
^
symbol: variable super
location: class MainActivity
Main.java:164: error: package R does not exist
setContentView(R.layout.activity_main);
^
Main.java:166: error: package R does not exist
toggleThreadButton = findViewById(R.id.mainActivityButtonStartThread);
^
Main.java:167: error: package R does not exist
peakText = findViewById(R.id.mainActivityTextPeak);
^
Main.java:168: error: package R does not exist
volumeProgress = findViewById(R.id.mainActivityProgressVolume);
^
Main.java:169: error: package R does not exist
dataGraph = findViewById(R.id.mainActivityGraphData);
^
Main.java:171: error: package View does not exist
toggleThreadButton.setOnClickListener(new View.OnClickListener() {
^
Main.java:178: error: method does not override or implement a method from a supertype
@Override
^
Main.java:184: error: cannot find symbol
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
^
symbol: variable PackageManager
location: class MainActivity
Main.java:188: error: cannot find symbol
Toast.makeText(this, "Permission was not granted", Toast.LENGTH_SHORT).show();
^
symbol: variable Toast
location: class MainActivity
Main.java:188: error: cannot find symbol
Toast.makeText(this, "Permission was not granted", Toast.LENGTH_SHORT).show();
^
symbol: variable Toast
location: class MainActivity
Main.java:194: error: method does not override or implement a method from a supertype
@Override
^
Main.java:197: error: cannot find symbol
super.onStop();
^
symbol: variable super
location: class MainActivity
49 errors
Standard output is empty