diff --git a/android/ConductorsPhone/.idea/vcs.xml b/android/ConductorsPhone/.idea/vcs.xml
new file mode 100644
index 0000000..b2bdec2
--- /dev/null
+++ b/android/ConductorsPhone/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android/ConductorsPhone/app/src/main/java/de/tonifetzer/conductorswatch/Metronome.java b/android/ConductorsPhone/app/src/main/java/de/tonifetzer/conductorswatch/Metronome.java
index c94f74e..01b34de 100644
--- a/android/ConductorsPhone/app/src/main/java/de/tonifetzer/conductorswatch/Metronome.java
+++ b/android/ConductorsPhone/app/src/main/java/de/tonifetzer/conductorswatch/Metronome.java
@@ -1,8 +1,6 @@
package de.tonifetzer.conductorswatch;
import android.content.Context;
-import android.media.AudioManager;
-import android.media.MediaPlayer;
import android.media.SoundPool;
import java.util.TimerTask;
@@ -18,7 +16,7 @@ public class Metronome extends TimerTask {
boolean loaded = false;
private int soundID;
- public Metronome(Context context){
+ public Metronome(Context ){
soundPool = new SoundPool.Builder().setMaxStreams(10).build();
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
diff --git a/android/ConductorsPhone/build.gradle b/android/ConductorsPhone/build.gradle
index 1a3d812..6c2bb63 100644
--- a/android/ConductorsPhone/build.gradle
+++ b/android/ConductorsPhone/build.gradle
@@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.1.2'
+ classpath 'com.android.tools.build:gradle:3.3.0'
// NOTE: Do not place your application dependencies here; they belong
diff --git a/android/ConductorsPhone/gradle/wrapper/gradle-wrapper.properties b/android/ConductorsPhone/gradle/wrapper/gradle-wrapper.properties
index 179b58d..301a3c0 100644
--- a/android/ConductorsPhone/gradle/wrapper/gradle-wrapper.properties
+++ b/android/ConductorsPhone/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Fri Apr 27 11:02:05 CEST 2018
+#Tue Jan 29 16:48:07 CET 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
diff --git a/android/ConductorsWatch/app/src/main/java/de/tonifetzer/conductorswatch/Metronome.java b/android/ConductorsWatch/app/src/main/java/de/tonifetzer/conductorswatch/Metronome.java
index 55cd34b..02a6999 100644
--- a/android/ConductorsWatch/app/src/main/java/de/tonifetzer/conductorswatch/Metronome.java
+++ b/android/ConductorsWatch/app/src/main/java/de/tonifetzer/conductorswatch/Metronome.java
@@ -1,48 +1,32 @@
package de.tonifetzer.conductorswatch;
+import android.content.Context;
import android.os.Vibrator;
import java.util.List;
+import java.util.TimerTask;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* Created by toni on 13/11/17.
*/
-//TODO: implement the metronome similar to phone. since thread sleeping is no accurate enough
-public class Metronome implements Runnable{
+public class Metronome extends TimerTask {
- private volatile boolean mRunning = true;
- private int mBPM;
+ private Vibrator mVibrator;
- public Metronome(int bpm){
- mBPM = bpm;
+ Metronome(Context context){
+ mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
}
@Override
public void run() {
- while(mRunning){
- for (OnMetronomeListener listener:listeners) {
- listener.onNewClick();
- }
+ mVibrator.vibrate(10);
- try {
- if(mBPM > 0){
- Thread.sleep(60000 / mBPM);
- } else {
- Thread.sleep(60000);
- }
-
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
+ for (OnMetronomeListener listener:listeners) {
+ listener.onNewClick();
}
-
- }
-
- public void stop() {
- mRunning = false;
}
/**
diff --git a/android/ConductorsWatch/app/src/main/java/de/tonifetzer/conductorswatch/WorkerFragment.java b/android/ConductorsWatch/app/src/main/java/de/tonifetzer/conductorswatch/WorkerFragment.java
index de28cd6..a5f068e 100644
--- a/android/ConductorsWatch/app/src/main/java/de/tonifetzer/conductorswatch/WorkerFragment.java
+++ b/android/ConductorsWatch/app/src/main/java/de/tonifetzer/conductorswatch/WorkerFragment.java
@@ -9,6 +9,8 @@ import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
+
+import java.util.Timer;
import java.util.Vector;
import de.tonifetzer.conductorswatch.ui.Croller;
@@ -27,8 +29,7 @@ public class WorkerFragment extends Fragment implements Metronome.OnMetronomeLis
private boolean mWorkerRunning = false;
private Estimator mEstimator;
- private Metronome mMetronome;
- private Thread mMetronomeThread;
+ private Timer mTimer;
private TextView mTextView;
private Croller mCroller;
@@ -55,15 +56,12 @@ public class WorkerFragment extends Fragment implements Metronome.OnMetronomeLis
super.onCreate(savedInstanceState);
// init bpm estimator and listener
- //TODO: hier ein Thread draus machen?
mEstimator = new Estimator(getContext());
mEstimator.add(this);
mBpmList = new Vector();
// init metronome and listener
- mMetronome = new Metronome(getArguments().getInt("bpm"));
- mMetronome.add(this);
- mMetronomeThread = new Thread(mMetronome, "metronomThread");
+ mTimer = new Timer();
//keep screen always on
this.getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
@@ -94,8 +92,8 @@ public class WorkerFragment extends Fragment implements Metronome.OnMetronomeLis
// start the worker thread for bpm estimator
mEstimator.start();
- // start the worker thread for metronom
- mMetronomeThread.start();
+ // start the timer for metronom based on the predefined bpm
+ mTimer.scheduleAtFixedRate(new Metronome(getContext()), 0, 60000 / getArguments().getInt("bpm"));
// everything is running
mWorkerRunning = true;
@@ -111,7 +109,7 @@ public class WorkerFragment extends Fragment implements Metronome.OnMetronomeLis
mEstimator.stop();
// stop the worker thread for metronom
- mMetronome.stop();
+ mTimer.cancel();
//private listener with list of all estimated bpm
if (mListener != null) {