fix(fitness): request ACTIVITY_RECOGNITION for cadence

Android step detector silently returns no events on API 29+
when ACTIVITY_RECOGNITION is ungranted, so cadence was always
absent from recorded tracks. Declare the permission, request
it at GPS start, guard sensor registration and retry it from
MainActivity.onRequestPermissionsResult when the user grants
mid-session, and toast a hint if they deny.
This commit is contained in:
2026-04-21 19:16:03 +02:00
parent cf5ac96fc3
commit a056618696
11 changed files with 106 additions and 7 deletions
+9
View File
@@ -79,6 +79,7 @@ interface AndroidBridge {
pauseTracking(): void;
resumeTracking(): void;
getIntervalState(): string;
hasActivityRecognitionPermission?: () => boolean;
}
function checkTauri(): boolean {
@@ -294,6 +295,13 @@ export function createGpsTracker() {
}
}
function cadenceAvailable(): boolean {
const bridge = getAndroidBridge();
// No bridge (e.g. browser) or older build lacking the check: assume ok, don't nag.
if (!bridge || typeof bridge.hasActivityRecognitionPermission !== 'function') return true;
try { return bridge.hasActivityRecognitionPermission(); } catch { return true; }
}
return {
get track() { return track; },
get isTracking() { return isTracking; },
@@ -304,6 +312,7 @@ export function createGpsTracker() {
get available() { return checkTauri(); },
get debug() { return _debugMsg; },
get intervalState() { return _intervalState; },
cadenceAvailable,
start,
stop,
reset,