startStepTracking method

  1. @override
Future<bool> startStepTracking()
override

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;
  }
}