Skip to content

Commit

Permalink
Merge pull request #19 from HWJFish/117-settings-voice-announcements-…
Browse files Browse the repository at this point in the history
…announce-temperature

117 settings voice announcements announce temperature
  • Loading branch information
HWJFish authored Apr 26, 2024
2 parents 7cff54c + 02c7cb5 commit c79703d
Show file tree
Hide file tree
Showing 7 changed files with 79 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import static de.dennisguse.opentracks.settings.PreferencesUtils.shouldVoiceAnnounceRunAverageSpeed;
import static de.dennisguse.opentracks.settings.PreferencesUtils.shouldVoiceAnnounceMaxSlope;
import static de.dennisguse.opentracks.settings.PreferencesUtils.shouldVoiceAnnounceAveragesloperecording;
import static de.dennisguse.opentracks.settings.PreferencesUtils.shouldVoiceAnnounceTemperature;
import static de.dennisguse.opentracks.settings.PreferencesUtils.shouldVoiceAnnounceMaxSpeedRecording;
import static de.dennisguse.opentracks.settings.PreferencesUtils.shouldVoiceAnnounceAverageSpeedRecording;
import static de.dennisguse.opentracks.settings.PreferencesUtils.shouldVoiceAnnounceAverageslopeRun;
Expand All @@ -37,6 +38,7 @@
import de.dennisguse.opentracks.stats.SensorStatistics;
import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.ui.intervals.IntervalStatistics;
import de.dennisguse.opentracks.services.WeatherFetchService;


class VoiceAnnouncementUtils {
Expand Down Expand Up @@ -79,6 +81,9 @@ static Spannable createAfterRecording(Context context, TrackStatistics trackStat
Distance totalDistance = trackStatistics.getTotalDistance();
Float altitudeGain=trackStatistics.getTotalAltitudeGain();
Float altitudeLoss=trackStatistics.getTotalAltitudeLoss();
Double temperature = WeatherFetchService.fetchTempData(trackStatistics.getLatitude(),trackStatistics.getLongitude());


Duration skiingTime = trackStatistics.getTotalTime().minus(trackStatistics.getTotalChairliftWaitingTime());
Duration waitingTime = trackStatistics.getTotalChairliftWaitingTime();

Expand Down Expand Up @@ -144,6 +149,28 @@ static Spannable createAfterRecording(Context context, TrackStatistics trackStat
appendDecimalUnit(builder, MessageFormat.format(template, Map.of("n", speedInUnit)), speedInUnit, 1, unitSpeedTTS);
builder.append(".");
}


if (shouldVoiceAnnounceTimeSkiedRecording()) {
double timeSkied = skiingTime.toSeconds(); // Calculate the maximum slope based on elevation data
if (!Double.isNaN(timeSkied)) {
builder.append(" ")
.append(context.getString(R.string.settings_announcements_time_skied_recording))
.append(": ")
.append(String.format("%.2f%%", timeSkied)) // Format the slope value
.append(".");
}
}
if(shouldVoiceAnnounceTemperature()){

if (!Double.isNaN(temperature)) {
builder.append(" ")
.append(context.getString(R.string.settings_announcements_temperature))
.append(": ")
.append(String.format("%.2f%%", temperature)) // Format the slope value
.append(".");
}
}

if (shouldVoiceAnnounceAveragesloperecording()) {
double avgSlope=calculateAverageSlope(totalDistance,altitudeGain,altitudeLoss);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,11 @@ public static void setVoiceAnnounceMovingTime(boolean value) {
public static boolean shouldVoiceAnnounceAverageSpeedPace() {
return getBoolean(R.string.voice_announce_average_speed_pace_key, true);
}
public static boolean shouldVoiceAnnounceMaxSpeedRun() {
return getBoolean(R.string.voice_announce_max_speed_run_key, true);
}



@VisibleForTesting
public static void setVoiceAnnounceAverageSpeedPace(boolean value) {
Expand Down Expand Up @@ -468,13 +473,15 @@ public static void setVoiceAnnounceAverageHeartRate(boolean value) {
setBoolean(R.string.voice_announce_average_heart_rate_key, value);
}


public static boolean shouldVoiceAnnounceMaxSpeedRun() {
return getBoolean(R.string.voice_announce_max_speed_run_key, true);
public static boolean shouldVoiceAnnounceTemperature() {
return getBoolean(R.string.voice_announce_temperature_key, true);
}


@VisibleForTesting
public static void setVoiceAnnounceTemperature(boolean value) {
setBoolean(R.string.voice_announce_temperature_key, value);
}
public static void setVoiceAnnounceMaxSpeedRun(boolean value) {
setBoolean(R.string.voice_announce_max_speed_run_key, value);
}
Expand Down
31 changes: 29 additions & 2 deletions src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,13 @@ public class TrackStatistics {

private Float altitudeRun;

private Duration timeRun;

private Double latitude;

private Duration timeRun;


private Double longitude;



Expand Down Expand Up @@ -145,7 +149,8 @@ public TrackStatistics(TrackStatistics other) {
altitudeRun=other.altitudeRun;
distanceRun=other.totalDistance;
timeRun=other.timeRun;

latitude=other.latitude;
longitude=other.longitude;
}


Expand Down Expand Up @@ -229,6 +234,12 @@ public void merge(TrackStatistics other) {
altitudeRun += other.altitudeRun;
distanceRun = distanceRun.plus(other.distanceRun);
timeRun= timeRun.plus(other.timeRun);
if(other.longitude!=null){
longitude=other.longitude;
}
if(other.latitude!=null){
latitude=other.latitude;
}
}

public boolean isInitialized() {
Expand Down Expand Up @@ -521,6 +532,22 @@ public void setTimeRun(Duration timeRun) {
Log.d("timeRun",this.timeRun.getSeconds()+"");
}

public Double getLatitude() {
return latitude;
}

public void setLatitude(Double latitude) {
this.latitude = latitude;
}

public Double getLongitude() {
return longitude;
}

public void setLongitude(Double longitude) {
this.longitude = longitude;
}


// Method to calculate the total skiing duration for the current day
// public Duration getTotalSkiingDuration() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,11 @@ public void addTrackPoint(TrackPoint trackPoint) {
currentSegment.setMaximumSpeedPerRun(((float) currentSpeed));
}
}
if (trackPoint.hasLocation()){
currentSegment.setLatitude(trackPoint.getLatitude());
currentSegment.setLongitude(trackPoint.getLongitude());
}

// this function will always be called for all trackpoints to check if it is waiting for chairlift
// and also modify values for the check according to current trackpoint.
if (isWaitingForChairlift(trackPoint)){
Expand Down
3 changes: 2 additions & 1 deletion src/main/res/values/settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,8 @@
<string name="voice_announce_average_slope_run_key">voiceAnnounceAverageSlopeRun</string>
<bool name="voice_announce_average_slope_run_default" translatable="false">true</bool>


<string name="voice_announce_temperature_key">voiceAnnounceTemperature</string>
<bool name="voice_announce_temperature_default" translatable="false">true</bool>

<!-- Run related data -->

Expand Down
1 change: 1 addition & 0 deletions src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,7 @@ limitations under the License.
<string name="settings_announcements_average_slope_recording">Average slope</string>


<string name="settings_announcements_temperature">Temperature</string>


<!-- Custom Layout -->
Expand Down
5 changes: 5 additions & 0 deletions src/main/res/xml/settings_announcements.xml
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@
android:title="@string/settings_announcements_average_slope_recording"
app:key="@string/voice_announce_average_slope_recording_key" />

<SwitchPreferenceCompat
android:defaultValue="@bool/voice_announce_temperature_default"
android:key="@string/voice_announce_temperature_key"
android:title="@string/settings_announcements_temperature" />

</PreferenceCategory>

<PreferenceCategory android:title="@string/settings_announcements_run_title">
Expand Down

0 comments on commit c79703d

Please sign in to comment.