Announcements: can be triggered by time and distance (instead of either).

Fixes #921.
This commit is contained in:
Dennis Guse
2021-08-29 20:22:31 +02:00
parent 9cb3d8c1bb
commit 8f2d1722ad
65 changed files with 169 additions and 205 deletions
@@ -292,28 +292,34 @@ public class StringUtils {
}
}
/**
* Gets the frequency display options.
*
* @param context the context
* @param metricUnits true to display in metric units
*/
public static String[] getFrequencyOptions(Context context, boolean metricUnits) {
String[] values = context.getResources().getStringArray(R.array.frequency_values);
public static String[] getAnnouncementFrequency(Context context) {
String[] values = context.getResources().getStringArray(R.array.voice_announcement_frequency_values);
String[] options = new String[values.length];
for (int i = 0; i < values.length; i++) {
int value = Integer.parseInt(values[i]);
if (context.getString(R.string.frequency_off).equals(values[i])) {
if (context.getString(R.string.announcement_off).equals(values[i])) {
options[i] = context.getString(R.string.value_off);
} else if (value < 0) {
options[i] = context.getString(metricUnits ? R.string.value_integer_kilometer : R.string.value_integer_mile, Math.abs(value));
} else {
int value = Integer.parseInt(values[i]);
options[i] = context.getString(R.string.value_integer_minute, value);
}
}
return options;
}
public static String[] getAnnouncementDistance(Context context, boolean metricUnits) {
String[] values = context.getResources().getStringArray(R.array.voice_announcement_distance_values);
String[] options = new String[values.length];
for (int i = 0; i < values.length; i++) {
if (context.getString(R.string.announcement_off).equals(values[i])) {
options[i] = context.getString(R.string.value_off);
} else {
int value = Integer.parseInt(values[i]);
options[i] = context.getString(metricUnits ? R.string.value_integer_kilometer : R.string.value_integer_mile, value);
}
}
return options;
}
/**
* @return the formatted altitude_m (or null) and it's unit as {@link Pair}
*/