give vocal updates

This commit is contained in:
Ruslan Sokolovski 2020-01-01 22:26:20 -08:00
parent 07b362ddcc
commit a0a1f44ef9
5 changed files with 45 additions and 9 deletions

View File

@ -49,6 +49,12 @@ android {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
// abortOnError false
}
}
dependencies {

View File

@ -38,6 +38,8 @@ import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.speech.tts.TextToSpeech;
import androidx.core.app.ActivityCompat;
import org.mapsforge.core.graphics.Paint;
@ -171,6 +173,7 @@ public class RecordWorkoutActivity extends FitoTrackActivity implements Location
if(isResumed){
mHandler.post(this::updateDescription);
}
mHandler.post(this::speechUpdate);
}
}catch (InterruptedException e){
e.printStackTrace();
@ -178,14 +181,41 @@ public class RecordWorkoutActivity extends FitoTrackActivity implements Location
}).start();
}
int i= 0;
private void speechUpdate() {
long duration = recorder.getDuration();
if (duration / interval == lastSpeechUpdate / interval)
return;
timeView.setText(UnitUtils.getHourMinuteSecondTime(duration));
final String distanceCaption = getString(R.string.workoutDistance);
final String distance = UnitUtils.getDistance(recorder.getDistance());
final String avgSpeedCaption = getString(R.string.workoutAvgSpeed);
final String avgSpeed = UnitUtils.getSpeed(Math.min(100d, recorder.getAvgSpeed()));
tts = new TextToSpeech(this, (int status) -> {
if (status != TextToSpeech.SUCCESS) return;
final String text = distanceCaption + ": " + distance + ". "
+ avgSpeedCaption + ": " + avgSpeed;
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, "updateDescription" + duration);
});
lastSpeechUpdate = duration;
}
TextToSpeech tts;
long lastSpeechUpdate = 0;
final long interval = 60 * 1000;
private void updateDescription() {
i++;
timeView.setText(UnitUtils.getHourMinuteSecondTime(recorder.getDuration()));
infoViews[0].setText(getString(R.string.workoutDistance), UnitUtils.getDistance(recorder.getDistance()));
long duration = recorder.getDuration();
timeView.setText(UnitUtils.getHourMinuteSecondTime(duration));
final String distanceCaption = getString(R.string.workoutDistance);
final String distance = UnitUtils.getDistance(recorder.getDistance());
final String avgSpeedCaption = getString(R.string.workoutAvgSpeed);
final String avgSpeed = UnitUtils.getSpeed(Math.min(100d, recorder.getAvgSpeed()));
infoViews[0].setText(distanceCaption, distance);
infoViews[1].setText(getString(R.string.workoutBurnedEnergy), recorder.getCalories() + " kcal");
infoViews[2].setText(getString(R.string.workoutAvgSpeed), UnitUtils.getSpeed(Math.min(100d, recorder.getAvgSpeed())));
infoViews[2].setText(avgSpeedCaption, avgSpeed);
infoViews[3].setText(getString(R.string.workoutPauseDuration), UnitUtils.getHourMinuteSecondTime(recorder.getPauseDuration()));
}

View File

@ -48,7 +48,7 @@ public class WorkoutRecorder implements LocationListener.LocationChangeListener
}
}
private static final int PAUSE_TIME= 10000;
private static final int PAUSE_TIME= 1000*1000;
/**
* Time after which the workout is stopped and saved automatically because there is no activity anymore

View File

@ -57,7 +57,7 @@
<string name="workoutPace">Pace</string>
<string name="workoutRoute">Route</string>
<string name="workoutSpeed">Speed</string>
<string name="workoutAvgSpeed">Avg. Speed</string>
<string name="workoutAvgSpeed">Average Speed</string>
<string name="workoutTopSpeed">Top Speed</string>
<string name="workoutBurnedEnergy">Burned Energy</string>
<string name="workoutTotalEnergy">Total Energy</string>

View File

@ -26,7 +26,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
classpath 'com.android.tools.build:gradle:3.4.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files