minor refactoring / cleaning

This commit is contained in:
2024-09-19 20:49:12 -04:00
parent 137f31c104
commit 04873f1240
3 changed files with 76 additions and 16 deletions

View File

@@ -17,6 +17,36 @@ Future<void> setupListenHandler() async {
_session = await AudioSession.instance; _session = await AudioSession.instance;
await _session.configure(const AudioSessionConfiguration.music()); await _session.configure(const AudioSessionConfiguration.music());
//TODO: Do I need to handle these events? audioplayers may be doing it already
//_session.interruptionEventStream.listen((event) {
// if (event.begin) {
// switch (event.type) {
// case AudioInterruptionType.duck:
// _listenHandler.duck();
// break;
// case AudioInterruptionType.pause:
// case AudioInterruptionType.unknown:
// _listenHandler.pause();
// break;
// }
// } else {
// switch (event.type) {
// case AudioInterruptionType.duck:
// _listenHandler.unDuck();
// break;
// case AudioInterruptionType.pause:
// _listenHandler.play();
// break;
// case AudioInterruptionType.unknown:
// break;
// }
// }
//});
//_session.becomingNoisyEventStream.listen((_) {
// _listenHandler.pause();
//});
} }
ListenHandler getListenHandlder() => _listenHandler; ListenHandler getListenHandlder() => _listenHandler;

View File

@@ -45,6 +45,7 @@ class _PlayControlsState extends State<PlayControls>
print("Listen init"); print("Listen init");
_listenHandler.playbackState.listen((PlaybackState state) { _listenHandler.playbackState.listen((PlaybackState state) {
print("Playback state changed");
setState(() {}); setState(() {});
}); });
} }

View File

@@ -11,18 +11,11 @@ class ListenHandler extends BaseAudioHandler {
setup_player() { setup_player() {
_player.setReleaseMode(ReleaseMode.release); _player.setReleaseMode(ReleaseMode.release);
} _player.onPlayerStateChanged.listen((event) {
print("Received audioplayers event: $event");
ListenHandler() { switch (event) {
setup_player(); case PlayerState.playing:
}
bool isPlaying() => super.playbackState.value.playing;
@override
Future<void> play() async {
if (await startAudioSession()) {
_player.play(_radioSource, mode: PlayerMode.mediaPlayer);
super.playbackState.add(PlaybackState( super.playbackState.add(PlaybackState(
controls: [ controls: [
MediaControl.stop, MediaControl.stop,
@@ -34,16 +27,52 @@ class ListenHandler extends BaseAudioHandler {
}, },
playing: true, playing: true,
)); ));
} break;
} case PlayerState.paused:
case PlayerState.stopped:
@override case PlayerState.completed:
Future<void> pause() async { case PlayerState.disposed:
super.playbackState.add(PlaybackState( super.playbackState.add(PlaybackState(
controls: [], controls: [],
systemActions: {}, systemActions: {},
playing: false, playing: false,
)); ));
break;
}
});
}
ListenHandler() {
setup_player();
}
bool isPlaying() => super.playbackState.value.playing;
double _duckVol = 0;
void duck() {
//TODO: Confirm I need to do this manually, it looks like audioplayers already does this
print("Duck requested");
//_duckVol = _player.volume;
//_player.setVolume(_duckVol - 0.4 > 0 ? _duckVol - 0.4 : 0.0);
}
void unDuck() {
//TODO: Confirm I need to do this manually, it looks like audioplayers already does this
print("Unduck requested");
//_player.setVolume(_duckVol);
}
@override
Future<void> play() async {
if (await startAudioSession()) {
_player.play(_radioSource, mode: PlayerMode.mediaPlayer);
}
}
@override
Future<void> pause() async {
await stopAudioSession(); await stopAudioSession();
_player.stop(); _player.stop();
} }