fix(train): a recording followed whichever starts first, the app listening or the service

On a fresh install (GrapheneOS) a walk recorded no GPS on the screen,
which waited for GPS throughout though the file was whole. The app
listens to the recorder's lines as soon as it asked for the start, and
Android starts the service a moment later: listening first, it got
nothing of the file, and the service then wrote the header straight to
the file, past what hands each line on. The reader takes the first line
it gets as the header, found none, and dropped every line after.

The service now writes its header through write() as every line, and
the app takes the header from the file's first line where lines came
without one (RecordingReader.recover, on the next second), reading the
lines kept since after it, so either order and either recorder version
is followed. The fake recorder can now begin late, as the service does.

On foot, auto-pause by steps paused after 5 s and went on only with a
step where the phone has no step detector or one switched off
(GrapheneOS' Sensors): GPS speed decides there, and until the first
step and once the detector has been silent 30 s. A minute without any
fix, the recording screen asks whether location is on and precise.
ADR 0030, D65.

Whats-New: A recording follows its GPS again on a phone where it waited for GPS throughout.
Whats-New: Auto-pause on foot goes by GPS speed where the phone counts no steps.
Whats-New: After a minute without GPS, the recording screen asks whether location is on and precise.
Whats-New-De: Eine Aufzeichnung folgt ihrem GPS wieder auf Handys, auf denen sie die ganze Zeit auf GPS wartete.
Whats-New-De: Die automatische Pause zu Fuß richtet sich nach der GPS-Geschwindigkeit, wo das Handy keine Schritte zählt.
Whats-New-De: Nach einer Minute ohne GPS fragt die Aufzeichnung, ob der Standort an und genau ist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-04 20:38:07 +01:00
commit d305725bb5
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -1686,6 +1686,33 @@ Strava. What was found, 27 Oct:
The other figures stay metric; a units setting for all of them would come on
its own. A profile saved on Train 0.2.0, which doesn't know the field, loses
the unit, and the region's applies again until it is picked anew.
- **D65 The developer's feedback of 4 Nov 2026** (the developer's; the details the
agent's on that feedback):
- **A walk without GPS, found on a fresh install** (GrapheneOS): the app listens to
the recorder's lines as soon as it asked for the start, while Android starts the
service a moment later. Listening first, the app was handed nothing of the file
(the service didn't run yet), and the service then wrote the file's header
straight to the file, past what hands each line on; the app's reader takes the
first line it gets as the header, found none, and read nothing after: the
screen waited for GPS the whole walk, though the file was whole. The header now
goes through the service's `write` as every line, so a listener of either order
gets it, and the app, where lines came without a header, takes it from the
file's first line (`RecordingReader.recover`, at the next second), the lines
kept since read after it, so a recorder of either version is followed. Re-reading
the whole file instead would lose the lines handed on but not yet flushed (up to
5 s).
- **Auto-pause on foot without steps**: with activity recognition allowed but no
step detector (or one switched off, as GrapheneOS' *Sensors* permission does), the
pause by steps paused after 5 s and only a step went on. GPS speed (D16's 2 and
3 km/h on foot) now decides where the phone has no step detector, and, where it
has one, until its first step and once it has been silent 30 s; steps decide
again with the next one. Alternatives: asking the person to switch auto-pause off
(they don't know why it paused), or GPS speed alone on foot (a phone in a pocket
at a red light drifts, steps say better).
- **A minute without GPS says so**: no fix at all for a minute, from Start or since
the last, and the recording screen asks, in the warning's colour, whether location
is on and Train allowed the precise one (Android's approximate location gives no
GPS fixes).
## Consequences