global audio session handlder

This commit is contained in:
2024-09-08 17:57:23 -04:00
parent c71508712e
commit e0af795ff6
2 changed files with 24 additions and 3 deletions

View File

@@ -1,8 +1,10 @@
import 'package:audio_service/audio_service.dart'; import 'package:audio_service/audio_service.dart';
import 'package:audio_session/audio_session.dart';
import 'ListenHandler.dart'; import 'ListenHandler.dart';
late final ListenHandler _listenHandler; late final ListenHandler _listenHandler;
late final AudioSession _session;
Future<void> setupListenHandler() async { Future<void> setupListenHandler() async {
_listenHandler = await AudioService.init( _listenHandler = await AudioService.init(
@@ -12,6 +14,17 @@ Future<void> setupListenHandler() async {
androidNotificationChannelName: 'Ything Radio Playback', androidNotificationChannelName: 'Ything Radio Playback',
), ),
); );
_session = await AudioSession.instance;
await _session.configure(const AudioSessionConfiguration.music());
} }
ListenHandler getListenHandlder() => _listenHandler; ListenHandler getListenHandlder() => _listenHandler;
Future<bool> startAudioSession() async {
return await _session.setActive(true);
}
Future<void> stopAudioSession() async {
await _session.setActive(false);
}

View File

@@ -1,5 +1,6 @@
import 'package:audio_service/audio_service.dart'; import 'package:audio_service/audio_service.dart';
import 'package:audioplayers/audioplayers.dart'; import 'package:audioplayers/audioplayers.dart';
import 'package:ything_radio/Globals.dart';
class ListenHandler extends BaseAudioHandler { class ListenHandler extends BaseAudioHandler {
final _player = AudioPlayer(); final _player = AudioPlayer();
@@ -16,11 +17,18 @@ class ListenHandler extends BaseAudioHandler {
} }
@override @override
Future<void> play() => _player.resume(); Future<void> play() async {
if (await startAudioSession()) {
@override _player.resume();
Future<void> pause() => _player.stop(); }
}
@override
Future<void> stop() => _player.stop(); @override
Future<void> pause() async {
await stopAudioSession();
_player.stop();
}
@override
Future<void> stop() => pause();
} }