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