diff --git a/app/src/main/java/de/tadris/fitness/activity/RecordWorkoutActivity.java b/app/src/main/java/de/tadris/fitness/activity/RecordWorkoutActivity.java
index 12a56f7..ca361a0 100644
--- a/app/src/main/java/de/tadris/fitness/activity/RecordWorkoutActivity.java
+++ b/app/src/main/java/de/tadris/fitness/activity/RecordWorkoutActivity.java
@@ -173,7 +173,7 @@ public class RecordWorkoutActivity extends FitoTrackActivity implements Location
if(isResumed){
mHandler.post(this::updateDescription);
}
- mHandler.post(this::speechUpdate);
+ mHandler.post(this::spokenUpdate);
}
}catch (InterruptedException e){
e.printStackTrace();
@@ -181,9 +181,12 @@ public class RecordWorkoutActivity extends FitoTrackActivity implements Location
}).start();
}
- private void speechUpdate() {
+ private void spokenUpdate() {
+ final long interval = 60 * 1000 * Instance.getInstance(this).userPreferences.getSpokenUpdatePeriod();
+ if (interval == 0)
+ return;
long duration = recorder.getDuration();
- if (duration / interval == lastSpeechUpdate / interval)
+ if (duration / interval == lastSpokenUpdate / interval)
return;
timeView.setText(UnitUtils.getHourMinuteSecondTime(duration));
@@ -199,12 +202,11 @@ public class RecordWorkoutActivity extends FitoTrackActivity implements Location
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, "updateDescription" + duration);
});
- lastSpeechUpdate = duration;
+ lastSpokenUpdate = duration;
}
TextToSpeech tts;
- long lastSpeechUpdate = 0;
- final long interval = 60 * 1000;
+ long lastSpokenUpdate = 0;
private void updateDescription() {
long duration = recorder.getDuration();
diff --git a/app/src/main/java/de/tadris/fitness/activity/SettingsActivity.java b/app/src/main/java/de/tadris/fitness/activity/SettingsActivity.java
index 1537f5f..ea16c97 100644
--- a/app/src/main/java/de/tadris/fitness/activity/SettingsActivity.java
+++ b/app/src/main/java/de/tadris/fitness/activity/SettingsActivity.java
@@ -160,6 +160,7 @@ public class SettingsActivity extends PreferenceActivity {
bindPreferenceSummaryToValue(findPreference("mapStyle"));
findPreference("weight").setOnPreferenceClickListener(preference -> showWeightPicker());
+ findPreference("spokenUpdatePeriod").setOnPreferenceClickListener(preference -> showSpokenUdatePeriodPicker());
findPreference("import").setOnPreferenceClickListener(preference -> showImportDialog());
findPreference("export").setOnPreferenceClickListener(preference -> showExportDialog());
@@ -280,7 +281,8 @@ public class SettingsActivity extends PreferenceActivity {
np.setMaxValue((int) UnitUtils.CHOSEN_SYSTEM.getWeightFromKilogram(150));
np.setMinValue((int) UnitUtils.CHOSEN_SYSTEM.getWeightFromKilogram(20));
np.setFormatter(value -> value + " " + UnitUtils.CHOSEN_SYSTEM.getWeightUnit());
- np.setValue((int)Math.round(UnitUtils.CHOSEN_SYSTEM.getWeightFromKilogram(preferences.getInt("weight", 80))));
+ final String preferenceKey = "weight";
+ np.setValue((int)Math.round(UnitUtils.CHOSEN_SYSTEM.getWeightFromKilogram(preferences.getInt(preferenceKey, 80))));
np.setWrapSelectorWheel(false);
d.setView(v);
@@ -289,7 +291,33 @@ public class SettingsActivity extends PreferenceActivity {
d.setPositiveButton(R.string.okay, (dialog, which) -> {
int unitValue= np.getValue();
int kilograms= (int)Math.round(UnitUtils.CHOSEN_SYSTEM.getKilogramFromUnit(unitValue));
- preferences.edit().putInt("weight", kilograms).apply();
+ preferences.edit().putInt(preferenceKey, kilograms).apply();
+ });
+
+ d.create().show();
+
+ return true;
+ }
+
+ private boolean showSpokenUdatePeriodPicker() {
+ final String preferenceKey = "spokenUpdatePeriod";
+ final AlertDialog.Builder d = new AlertDialog.Builder(this);
+ final SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(this);
+ //d.setTitle(getString(R.string.pref_weight));
+ d.setTitle("Select period between spoken updates, in minutes");
+ View v= getLayoutInflater().inflate(R.layout.dialog_spoken_updates_picker, null);
+ NumberPicker np = v.findViewById(R.id.spokenUpdatesPicker);
+ np.setMaxValue(60);
+ np.setMinValue(0);
+ np.setFormatter(value -> value==0 ? "No speech" : value + " min" );
+ np.setValue((preferences.getInt(preferenceKey, 0)));
+ np.setWrapSelectorWheel(false);
+
+ d.setView(v);
+
+ d.setNegativeButton(R.string.cancel, null);
+ d.setPositiveButton(R.string.okay, (dialog, which) -> {
+ preferences.edit().putInt(preferenceKey, np.getValue()).apply();
});
d.create().show();
diff --git a/app/src/main/java/de/tadris/fitness/data/UserPreferences.java b/app/src/main/java/de/tadris/fitness/data/UserPreferences.java
index 385be76..53ea898 100644
--- a/app/src/main/java/de/tadris/fitness/data/UserPreferences.java
+++ b/app/src/main/java/de/tadris/fitness/data/UserPreferences.java
@@ -35,6 +35,10 @@ public class UserPreferences {
return preferences.getInt("weight", 80);
}
+ public int getSpokenUpdatePeriod(){
+ return preferences.getInt("spokenUpdatePeriod", 5);
+ }
+
public String getMapStyle(){
return preferences.getString("mapStyle", "osm.mapnik");
}
diff --git a/app/src/main/res/layout/dialog_spoken_updates_picker.xml b/app/src/main/res/layout/dialog_spoken_updates_picker.xml
new file mode 100644
index 0000000..f9e481d
--- /dev/null
+++ b/app/src/main/res/layout/dialog_spoken_updates_picker.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/preferences_main.xml b/app/src/main/res/xml/preferences_main.xml
index dd24e5a..cea1d6c 100644
--- a/app/src/main/res/xml/preferences_main.xml
+++ b/app/src/main/res/xml/preferences_main.xml
@@ -41,6 +41,13 @@
android:key="mapStyle"
android:title="@string/mapStyle" />
+
+
@@ -55,4 +62,4 @@
-
\ No newline at end of file
+