forked from upstream-mirrors/OpenTracks
This commit is contained in:
@@ -103,6 +103,7 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand
|
|||||||
if (PreferencesUtils.isKey(context, R.string.stats_units_key, key)) {
|
if (PreferencesUtils.isKey(context, R.string.stats_units_key, key)) {
|
||||||
boolean metricUnits = PreferencesUtils.isMetricUnits(sharedPreferences, context);
|
boolean metricUnits = PreferencesUtils.isMetricUnits(sharedPreferences, context);
|
||||||
voiceExecutor.setMetricUnits(metricUnits);
|
voiceExecutor.setMetricUnits(metricUnits);
|
||||||
|
notificationManager.setMetricUnits(metricUnits);
|
||||||
}
|
}
|
||||||
if (PreferencesUtils.isKey(context, R.string.voice_frequency_key, key)) {
|
if (PreferencesUtils.isKey(context, R.string.voice_frequency_key, key)) {
|
||||||
voiceExecutor.setTaskFrequency(PreferencesUtils.getVoiceFrequency(sharedPreferences, context));
|
voiceExecutor.setTaskFrequency(PreferencesUtils.getVoiceFrequency(sharedPreferences, context));
|
||||||
@@ -557,7 +558,7 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand
|
|||||||
|
|
||||||
fillWithSensorDataSet(trackPoint);
|
fillWithSensorDataSet(trackPoint);
|
||||||
|
|
||||||
notificationManager.updateTrackPoint(this, trackPoint, recordingGpsAccuracy);
|
notificationManager.updateTrackPoint(this, track.getTrackStatistics(), trackPoint, recordingGpsAccuracy);
|
||||||
|
|
||||||
//TODO Figure out how to avoid loading the lastValidTrackPoint from the database
|
//TODO Figure out how to avoid loading the lastValidTrackPoint from the database
|
||||||
TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(track.getId());
|
TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(track.getId());
|
||||||
|
|||||||
+14
-3
@@ -5,6 +5,7 @@ import android.app.NotificationChannel;
|
|||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
@@ -12,6 +13,8 @@ import androidx.core.app.NotificationCompat;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
|
import de.dennisguse.opentracks.fragments.StatisticsRecordedFragment;
|
||||||
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
|
|
||||||
@@ -30,6 +33,8 @@ class TrackRecordingServiceNotificationManager {
|
|||||||
|
|
||||||
private boolean previousLocationWasAccurate = true;
|
private boolean previousLocationWasAccurate = true;
|
||||||
|
|
||||||
|
private Boolean metricUnits = null;
|
||||||
|
|
||||||
TrackRecordingServiceNotificationManager(Context context) {
|
TrackRecordingServiceNotificationManager(Context context) {
|
||||||
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
@@ -59,11 +64,11 @@ class TrackRecordingServiceNotificationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void updateContent(String content) {
|
void updateContent(String content) {
|
||||||
notificationBuilder.setContentText(content);
|
notificationBuilder.setSubText(content);
|
||||||
updateNotification();
|
updateNotification();
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateTrackPoint(Context context, TrackPoint trackPoint, int recordingGpsAccuracy) {
|
void updateTrackPoint(Context context, TrackStatistics trackStatistics, TrackPoint trackPoint, int recordingGpsAccuracy) {
|
||||||
String formattedAccuracy = context.getString(R.string.value_none);
|
String formattedAccuracy = context.getString(R.string.value_none);
|
||||||
if (trackPoint.hasAccuracy()) {
|
if (trackPoint.hasAccuracy()) {
|
||||||
formattedAccuracy = StringUtils.formatDistance(context, trackPoint.getAccuracy(), PreferencesUtils.isMetricUnits(PreferencesUtils.getSharedPreferences(context), context));
|
formattedAccuracy = StringUtils.formatDistance(context, trackPoint.getAccuracy(), PreferencesUtils.isMetricUnits(PreferencesUtils.getSharedPreferences(context), context));
|
||||||
@@ -74,7 +79,9 @@ class TrackRecordingServiceNotificationManager {
|
|||||||
previousLocationWasAccurate = currentLocationWasAccurate;
|
previousLocationWasAccurate = currentLocationWasAccurate;
|
||||||
}
|
}
|
||||||
|
|
||||||
notificationBuilder.setContentText(context.getString(R.string.track_recording_notification_accuracy, formattedAccuracy));
|
notificationBuilder.setContentTitle(context.getString(R.string.track_distance_notification, StringUtils.formatDistance(context, trackStatistics.getTotalDistance(), metricUnits)));
|
||||||
|
notificationBuilder.setContentText(context.getString(R.string.track_speed_notification, StringUtils.formatSpeed(context, trackPoint.getSpeed(), metricUnits, true)));
|
||||||
|
notificationBuilder.setSubText(context.getString(R.string.track_recording_notification_accuracy, formattedAccuracy));
|
||||||
updateNotification();
|
updateNotification();
|
||||||
|
|
||||||
notificationBuilder.setOnlyAlertOnce(true);
|
notificationBuilder.setOnlyAlertOnce(true);
|
||||||
@@ -93,6 +100,10 @@ class TrackRecordingServiceNotificationManager {
|
|||||||
return notificationBuilder.build();
|
return notificationBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setMetricUnits(boolean metricUnits) {
|
||||||
|
this.metricUnits = metricUnits;
|
||||||
|
}
|
||||||
|
|
||||||
private void updateNotification() {
|
private void updateNotification() {
|
||||||
notificationManager.notify(NOTIFICATION_ID, getNotification());
|
notificationManager.notify(NOTIFICATION_ID, getNotification());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -465,6 +465,9 @@ limitations under the License.
|
|||||||
<string name="track_name_format">Track %1$d</string>
|
<string name="track_name_format">Track %1$d</string>
|
||||||
<string name="track_record_notification">Recording your track…</string>
|
<string name="track_record_notification">Recording your track…</string>
|
||||||
<string name="track_recording_notification_accuracy">Location accuracy: %1$s</string>
|
<string name="track_recording_notification_accuracy">Location accuracy: %1$s</string>
|
||||||
|
<string name="track_distance_notification">Distance: %1$s</string>
|
||||||
|
<string name="track_speed_notification">Speed: %1$s</string>
|
||||||
|
<string name="track_pace_notification">Pace: %1$s</string>
|
||||||
<string name="track_markers">%1$s Markers</string>
|
<string name="track_markers">%1$s Markers</string>
|
||||||
<!-- Track Delete -->
|
<!-- Track Delete -->
|
||||||
<string name="track_delete_one_confirm_message">The track and its markers will be permanently deleted from the device.</string>
|
<string name="track_delete_one_confirm_message">The track and its markers will be permanently deleted from the device.</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user