startPlayback method

Future<bool> startPlayback(
  1. String url
)

Starts playback of the audio stream from the given URL.

Returns true if playback started successfully, false otherwise.

Implementation

Future<bool> startPlayback(String url) async {
  try {
    // Make sure the audio session is initialized
    await _initializeAudioSession();

    // Request audio focus
    final sessionActive = await _focusManager.requestFocus();
    if (!sessionActive) {
      _handleError(
        PlayerException(
          'session_activation_failed',
          'Failed to activate audio session',
        ),
      );
      return false;
    }

    // Update processing state
    if (!_disposed) {
      _processingStateSubject.add(ProcessingState.loading);
    }

    // Start playback
    final success = await MymediaPlatform.instance.startPlayback(url);

    if (!_disposed) {
      if (success) {
        _playingSubject.add(true);
        _processingStateSubject.add(ProcessingState.ready);

        // Show notification
        final state = PlaybackState(
          processingState: ProcessingState.ready,
          playing: true,
          title: _extractTitleFromUrl(url),
          position: 0,
          duration: 0,
          timestamp: DateTime.now().millisecondsSinceEpoch,
          url: url,
        );
        _updateNotification(state);
      } else {
        final exception = SourceException(
          'playback_failed',
          'Failed to start playback',
          url,
        );
        _handleError(exception);
      }
    }

    return success;
  } catch (e) {
    final exception = PlayerException(
      'playback_error',
      'Error starting playback',
      e,
    );
    _handleError(exception);
    return false;
  }
}