Compare commits

..

5 Commits

Author SHA1 Message Date
Dennis Guse 7e6237de3a Release: v3.17.1 2021-04-17 22:40:05 +02:00
Román Martínez 772dad4837 announce called after getting recordingTrackId. Fixed a potencial race condition. 2021-04-17 22:26:23 +02:00
Román Martínez 99126fa357 Distance interval bugfixed: interval options are km/mi values. 2021-04-17 21:16:32 +02:00
Román Martínez b2c91d7592 registerListener for barometric sensor uses SENSOR_DELAY_FASTEST instead of nanoseconds. Fixes #714. 2021-04-17 19:34:05 +02:00
Rodrigo Oliveira 3c5a1be16b Fix #711: declare TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE on queries element
This enables the use of TextToSpeech engine on Android 11.
Ref.: https://developer.android.com/reference/android/speech/tts/TextToSpeech
2021-04-17 19:31:26 +02:00
7 changed files with 37 additions and 14 deletions
+2 -2
View File
@@ -51,8 +51,8 @@ android {
defaultConfig { defaultConfig {
applicationId "de.dennisguse.opentracks" applicationId "de.dennisguse.opentracks"
versionCode 3981 versionCode 3986
versionName "v3.17.0" versionName "v3.17.1"
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\"" buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
@@ -0,0 +1,7 @@
v3.17.1: OpenTracks
Bugfix:
- Interval length in meters instead of kilometers (introduced in v3.17.0)
- Elevation gain/loss not recorded (introduced in v3.17.0)
- Announcements not working on Android 11
+6
View File
@@ -351,4 +351,10 @@ limitations under the License.
android:exported="false" android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" /> android:permission="android.permission.BIND_JOB_SERVICE" />
</application> </application>
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
</manifest> </manifest>
@@ -20,9 +20,13 @@ public class Distance {
return of(distance_mile * UnitConversions.MI_TO_M); return of(distance_mile * UnitConversions.MI_TO_M);
} }
public static Distance ofKilometer(double distance_km) {
return of(distance_km * UnitConversions.KM_TO_M);
}
public static Distance one(boolean metricUnit) { public static Distance one(boolean metricUnit) {
if (metricUnit) { if (metricUnit) {
return Distance.of(1); return Distance.ofKilometer(1);
} else { } else {
return Distance.ofMile(1); return Distance.ofMile(1);
} }
@@ -40,7 +40,7 @@ public class AltitudeSumManager implements SensorEventListener {
Log.w(TAG, "No pressure sensor available."); Log.w(TAG, "No pressure sensor available.");
isConnected = false; isConnected = false;
} else { } else {
isConnected = sensorManager.registerListener(this, pressureSensor, (int) SAMPLING_RATE.toNanos()); isConnected = sensorManager.registerListener(this, pressureSensor, SensorManager.SENSOR_DELAY_FASTEST);
} }
lastAcceptedPressureValue_hPa = Float.NaN; lastAcceptedPressureValue_hPa = Float.NaN;
@@ -146,9 +146,9 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
@Override @Override
public void onTrackRecordingId(Track.Id trackId) { public void onTrackRecordingId(Track.Id trackId) {
recordingTrackId = trackId; recordingTrackId = trackId;
announce(trackRecordingService.getTrackStatistics());
} }
}); });
announce(trackRecordingService.getTrackStatistics());
} }
/** /**
@@ -181,7 +181,11 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
} }
Track track = contentProviderUtils.getTrack(recordingTrackId); Track track = contentProviderUtils.getTrack(recordingTrackId);
String category = track != null ? track.getCategory() : ""; if (track == null) {
Log.i(TAG, "It doesn't exists a track with trackid = " + recordingTrackId);
return;
}
String category = track.getCategory();
//TODO Querying all TrackPoints all the time is inefficient; use TrackDataHub or something else. //TODO Querying all TrackPoints all the time is inefficient; use TrackDataHub or something else.
TrackPointIterator trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(track.getId(), null); TrackPointIterator trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(track.getId(), null);
@@ -35,7 +35,7 @@ public class IntervalStatisticsModel extends AndroidViewModel {
} }
intervalsLiveData = new MutableLiveData<>(); intervalsLiveData = new MutableLiveData<>();
distanceInterval = interval.getValue(); distanceInterval = interval.getDistance(metricUnits);
loadIntervalStatistics(); loadIntervalStatistics();
} }
return intervalsLiveData; return intervalsLiveData;
@@ -73,7 +73,7 @@ public class IntervalStatisticsModel extends AndroidViewModel {
interval = IntervalOption.OPTION_1; interval = IntervalOption.OPTION_1;
} }
distanceInterval = interval.getValue(); distanceInterval = interval.getDistance(metricUnits);
loadIntervalStatistics(); loadIntervalStatistics();
} }
} }
@@ -91,19 +91,21 @@ public class IntervalStatisticsModel extends AndroidViewModel {
OPTION_20(20), OPTION_20(20),
OPTION_50(50); OPTION_50(50);
private final Distance value; private final int multiplier;
IntervalOption(int value) { IntervalOption(int multiplier) {
this.value = Distance.of(value); this.multiplier = multiplier;
} }
public Distance getValue() { public Distance getDistance(boolean metricUnits) {
return value; return Distance
.one(metricUnits)
.multipliedBy(multiplier);
} }
@Override @Override
public String toString() { public String toString() {
return "" + (int) value.toM(); //TODO Somehow IntervalsFragment relies on a parsable Integer. return "" + multiplier; //TODO Somehow IntervalsFragment relies on a parsable Integer.
} }
} }
} }