minor refactoring / cleaning
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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(() {});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,35 @@ 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");
|
||||||
|
|
||||||
|
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() {
|
ListenHandler() {
|
||||||
@@ -19,31 +48,31 @@ class ListenHandler extends BaseAudioHandler {
|
|||||||
|
|
||||||
bool isPlaying() => super.playbackState.value.playing;
|
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
|
@override
|
||||||
Future<void> play() async {
|
Future<void> play() async {
|
||||||
if (await startAudioSession()) {
|
if (await startAudioSession()) {
|
||||||
_player.play(_radioSource, mode: PlayerMode.mediaPlayer);
|
_player.play(_radioSource, mode: PlayerMode.mediaPlayer);
|
||||||
super.playbackState.add(PlaybackState(
|
|
||||||
controls: [
|
|
||||||
MediaControl.stop,
|
|
||||||
MediaControl.pause,
|
|
||||||
],
|
|
||||||
systemActions: {
|
|
||||||
MediaAction.stop,
|
|
||||||
MediaAction.pause,
|
|
||||||
},
|
|
||||||
playing: true,
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> pause() async {
|
Future<void> pause() async {
|
||||||
super.playbackState.add(PlaybackState(
|
|
||||||
controls: [],
|
|
||||||
systemActions: {},
|
|
||||||
playing: false,
|
|
||||||
));
|
|
||||||
await stopAudioSession();
|
await stopAudioSession();
|
||||||
_player.stop();
|
_player.stop();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user