feat: prioritize Bluetooth sensor data over GPS

- Restructured sensor logic to give absolute priority to Bluetooth sensors, largely ignoring GPS data for distance and speed calculations.
- Implemented downstream UI expansions, custom recording layouts, and new settings to reflect and control the new sensor-first flow.
- Added MediaNotificationListenerService and integrated media playback tracking within statistics.
- Modified VoiceAnnouncementUtils to harmonize announcements with the updated architecture.
- Added 'About This Fork' section to the README.

Note: These modifications were co-created with Antigravity AI.
This commit is contained in:
2026-09-11 14:02:57 +02:00
parent 00be0b565c
commit 7c6141f98c
50 changed files with 4338 additions and 62 deletions
@@ -50,6 +50,21 @@ class VoiceAnnouncementUtils {
.append(context.getString(R.string.voiceIdle));
}
static Spannable createLongBreak(Context context) {
return new SpannableStringBuilder()
.append(context.getString(R.string.voiceLongBreak));
}
static Spannable createSensorDisconnected(Context context) {
return new SpannableStringBuilder()
.append(context.getString(R.string.voiceSensorDisconnected));
}
static Spannable createSensorConnected(Context context) {
return new SpannableStringBuilder()
.append(context.getString(R.string.voiceSensorConnected));
}
static Spannable createStatistics(Context context, Track track, SensorDataSet sensorDataSet, UnitSystem unitSystem, boolean isReportSpeed, @Nullable Statistics currentInterval, @Nullable SensorStatistics sensorStatistics) {
Statistics trackStatistics = track.statistics();