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

View File

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

View File

@@ -11,6 +11,35 @@ class ListenHandler extends BaseAudioHandler {
setup_player() {
_player.setReleaseMode(ReleaseMode.release);
_player.onPlayerStateChanged.listen((event) {
print("Received audioplayers event: $event");
switch (event) {
case PlayerState.playing:
super.playbackState.add(PlaybackState(
controls: [
MediaControl.stop,
MediaControl.pause,
],
systemActions: {
MediaAction.stop,
MediaAction.pause,
},
playing: true,
));
break;
case PlayerState.paused:
case PlayerState.stopped:
case PlayerState.completed:
case PlayerState.disposed:
super.playbackState.add(PlaybackState(
controls: [],
systemActions: {},
playing: false,
));
break;
}
});
}
ListenHandler() {
@@ -19,31 +48,31 @@ class ListenHandler extends BaseAudioHandler {
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);
super.playbackState.add(PlaybackState(
controls: [
MediaControl.stop,
MediaControl.pause,
],
systemActions: {
MediaAction.stop,
MediaAction.pause,
},
playing: true,
));
}
}
@override
Future<void> pause() async {
super.playbackState.add(PlaybackState(
controls: [],
systemActions: {},
playing: false,
));
await stopAudioSession();
_player.stop();
}