startStepTracking method
Implementation
@override
Future<bool> startStepTracking() async {
if (_isTracking) return true;
try {
// Verify all required permissions
if (!await _verifyPermissions()) {
debugPrint('Permissions not granted. Cannot start tracking.');
return false;
}
// Initialize tracking state
await _prefs.setBool('isTracking', true);
await _prefs.setInt('initialSteps', -1);
await _prefs.setInt('sessionSteps', 0);
_isTracking = true;
_initialSteps = -1;
_sessionSteps = 0;
// Start step counting
await _restartTracking();
// Start background services
await BackgroundService.start(_config);
// Show start tracking notification
if (_config.enableTrackingNotification) {
await NotificationUtils.showTrackingNotification(
androidNotificationTitle: _config.trackingNotificationTitle,
androidNotificationContent: _config.trackingNotificationContent,
);
}
_emitUpdate();
return true;
} catch (e) {
debugPrint('Error starting step tracking: $e');
_isTracking = false;
await _prefs.setBool('isTracking', false);
return false;
}
}