feat(train): reminders to move and workouts suggested from the steps (ADR 0037)
Settings' Moving more, on Android: a reminder to get up after an idle time, and a suggested walk or run, each off until turned on (then every 30 minutes, weekdays 9:00 to 18:00, not 12:00 to 13:00, each value the person's), turning on asking for the activity and notification permissions. A WorkManager job every 15 minutes reads the phone's step counter and keeps two hours of readings. It reminds where fewer than 50 steps came over the idle time, all of it within the hours and outside the break, on the person's days, never while Train records or the phone is in a car (Android's car mode, or a car's Bluetooth audio or hands-free). It suggests a walk or a run where the last span averaged a walking or running cadence, once an hour; tapped, the Record sheet for it opens. The decisions are pure Kotlin (Movement.kt), tested on the JVM; the notifications' words are the app's, written into the job's configuration as the person's app opens. Polar's SDK sets neither the band's inactivity alert nor tells of one without an all-day connection, hence the phone's steps (ADR 0037). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
3f7b409e80
commit
e4585b478d
1 changed files with 1882 additions and 30 deletions
|
|
@ -912,5 +912,28 @@
|
|||
"weatherPrecipitation": "{amount} mm fell",
|
||||
"@weatherPrecipitation": {"placeholders": {"amount": {"type": "String"}}},
|
||||
"weatherDry": "Nothing fell",
|
||||
"weatherBy": "Weather data by Open-Meteo.com"
|
||||
"weatherBy": "Weather data by Open-Meteo.com",
|
||||
"movementTitle": "Moving more",
|
||||
"movementHint": "Reminders to get up, and workouts suggested as you move",
|
||||
"movementRemind": "Remind me to move",
|
||||
"movementRemindHint": "When the phone counted hardly a step for a while; never while recording or in a car.",
|
||||
"movementIdle": "After",
|
||||
"movementIdleMinutes": "{minutes} min still",
|
||||
"@movementIdleMinutes": {"placeholders": {"minutes": {"type": "int"}}},
|
||||
"movementHours": "Hours",
|
||||
"movementBreak": "Break",
|
||||
"movementBreakHint": "No reminders over it.",
|
||||
"movementDays": "Days",
|
||||
"movementSuggest": "Suggest workouts",
|
||||
"movementSuggestHint": "When your steps look like a walk or a run and nothing records: tap to record the rest of it. Your Loop's own detection is on its screen.",
|
||||
"movementUnavailable": "This phone doesn't count steps, so it can neither remind nor suggest.",
|
||||
"movementRefused": "Train needs the physical activity and notification permissions for this.",
|
||||
"movementLate": "The steps are counted every 15 minutes, so a reminder can come a little late.",
|
||||
"movementChannel": "Moving more",
|
||||
"movementRemindTitle": "Time to move",
|
||||
"movementRemindText": "{minutes} minutes with hardly a step. Up for a short walk?",
|
||||
"@movementRemindText": {"placeholders": {"minutes": {"type": "int"}}},
|
||||
"movementWalkingTitle": "Out for a walk?",
|
||||
"movementRunningTitle": "Out for a run?",
|
||||
"movementSuggestText": "Tap to record the rest of it."
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue