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
+37 -1
View File
@@ -331,6 +331,10 @@ limitations under the License.
<string name="settings_sensors_summary">Cycling Sensors, Wheel Circumference, Running Sensors</string>
<string name="settings_announcements_idle_category_title">Idle Announcements</string>
<string name="settings_announcements_idle_title">Idle</string>
<string name="settings_announcements_long_break_title">Long break</string>
<string name="settings_announcements_sensor_category_title">Sensors</string>
<string name="settings_announcements_sensor_disconnected_title">Sensor disconnected</string>
<string name="settings_announcements_sensor_connected_title">Sensor connected</string>
<string name="settings_announcements_statistics_title">Statistics Announcements</string>
<string name="settings_announcements_summary">Time, Distance, Voice Speed</string>
<string name="settings_import_export_title">Import and Export</string>
@@ -369,7 +373,9 @@ limitations under the License.
<string name="settings_recording_max_recording_distance_summary">A new segment is created if the distance between two locations is greater than %1$s</string>
<string name="settings_recording_max_recording_distance_title">Max distance</string>
<string name="settings_recording_min_recording_distance_title">Recording distance interval</string>
<string name="settings_recording_min_recording_interval_title">Recording time interval</string>
<string name="marker_idle_duration_key" translatable="false">marker_idle_duration</string>
<string name="settings_recording_marker_idle_duration_title">Marker idle duration</string>
<string name="settings_recording_min_recording_interval_key" translatable="false">recording_min_recording_interval_key</string>
<string name="settings_recording_min_required_accuracy_summary">Location is ignored if its accuracy is greater than %1$s</string>
<string name="settings_recording_min_required_accuracy_title">GPS accuracy</string>
<string name="settings_recording_track_name_date_iso_8601_option">Date (ISO 8601)</string>
@@ -478,6 +484,14 @@ limitations under the License.
<string name="stats_sensors_cadence">Cadence</string>
<string name="stats_sensors_power">Power</string>
<string name="stats_clock">Clock</string>
<string name="stats_auto_pause_status">Auto-Pause Status</string>
<string name="stats_sensor_status_hr">Sensor HR</string>
<string name="stats_sensor_status_cadence">Sensor Cadence</string>
<string name="stats_sensor_status_speed">Sensor Speed</string>
<string name="stats_debug_idle_timer">Idle Timer</string>
<string name="stats_debug_walking_timer">Walking Timer</string>
<string name="stats_debug_marker_timer">Marker Timer</string>
<!-- Track -->
<string name="track_name_format">Track %1$d</string>
<string name="track_recording_notification_accuracy">Location accuracy: %1$s</string>
@@ -536,6 +550,7 @@ limitations under the License.
<string name="value_float_mile_hour_recommended">%1$.1f mi/h (recommended)</string>
<string name="value_float_knots_recommended">%1$.1f knots (recommended)</string>
<string name="value_integer_minute">%1$d min</string>
<string name="value_integer_minute_recommended">%1$d min (recommended)</string>
<string name="value_integer_second">%1$d s</string>
<string name="value_none">None</string>
<string name="value_off">Off</string>
@@ -543,6 +558,9 @@ limitations under the License.
<string name="value_smallest_recommended">Smallest (recommended)</string>
<string name="value_int_seconds">%1$d s (recommended)</string>
<string name="voiceIdle">Becoming idle.</string>
<string name="voiceLongBreak">Long break recorded.</string>
<string name="voiceSensorDisconnected">Sensor disconnected.</string>
<string name="voiceSensorConnected">Sensor connected.</string>
<string name="voiceHoursPlural">
{n, plural,
=1 {1 hour}
@@ -705,4 +723,22 @@ limitations under the License.
<string name="settings_announcements_lap_power">Lap power</string>
<string name="power_x_watt">Power {x, plural, =1 {1 watt} other {# watts} }</string>
<string name="power">Power</string>
<string name="settings_recording_prevent_idle_if_cadence_key" translatable="false">preventIdleIfCadence</string>
<string name="settings_recording_prevent_idle_if_cadence_title">Prevent auto-pause if pedaling</string>
<string name="settings_recording_prevent_idle_if_cadence_summary">Do not enter idle mode while pedaling even if not moving</string>
<string name="sensor_disconnected_warning">Sensor disconnected. Continue with GPS?</string>
<string name="sensor_disconnected_switch_action">Switch</string>
<string name="settings_recording_auto_pause_on_cadence_0_key" translatable="false">autoPauseCadence0</string>
<string name="settings_recording_auto_pause_on_cadence_0_title">Auto-pause when carrying bike</string>
<string name="settings_recording_auto_pause_on_cadence_0_summary">Pause recording if cadence is 0 and speed is low</string>
<string name="settings_recording_auto_pause_on_cadence_0_speed_key" translatable="false">autoPauseCadence0Speed</string>
<string name="settings_recording_auto_pause_on_cadence_0_speed_title">Auto-pause max speed</string>
<string name="settings_recording_auto_pause_on_cadence_0_speed_summary">Speed below which walking with bike is detected (if cadence is 0)</string>
<string name="auto_pause_cadence_0_speed_default" translatable="false">8</string> <string name="media_title_default">No media playing</string>
<string name="media_artist_default">OpenTracks</string>
<string name="media_prev">Previous</string>
<string name="media_next">Next</string>
<string name="media_play_pause">Play/Pause</string>
<string name="media_permission_request">Enable Notification Access</string>
</resources>