flutter - audio_service 插件:AudioService.connected 返回 False
问题描述
初始化 AudioService 并成功播放音频后,但我“丢失”了 AudioService 连接,并且暂停或播放并且AudioService.playbackStateStream
不更新。
我的 AudioService.start 在 initState 上调用:
initPlaying() async {
AudioService.start(
backgroundTaskEntrypoint: _audioPlayerTaskEntrypoint,
androidNotificationChannelName: 'Audio Service Demo',
androidNotificationColor: 0xFF2196f3,
androidNotificationIcon: 'mipmap/ic_launcher',
);
}
之后,在调试器中,AudioService.connected 的结果为 False。
这是我的CustomAudioPlayer
课:
class CustomAudioPlayer extends BackgroundAudioTask {
MediaItem mediaItem = MediaItem(
id: 'audio_1',
album: 'Igreja em Aracaju',
title: 'Jesus é Deus',
artUri: 'https://tecnocamp.info/assets/noimageavailable.jpg');
Future<void> audioStart() async {
await FlutterRadio.audioStart();
}
@override
onStart(Map<String, dynamic> params) async {
AudioServiceBackground.setMediaItem(mediaItem);
AudioServiceBackground.setState(
controls: [pauseControl, stopControl],
playing: true,
processingState: AudioProcessingState.ready);
await audioStart();
onPlay();
}
@override
void onPlay() {
AudioServiceBackground.setState(
controls: [pauseControl, stopControl],
playing: true,
processingState: AudioProcessingState.ready);
FlutterRadio.play(url: streamUrl);
}
@override
void onPause() {
AudioServiceBackground.setState(
controls: [playControl, stopControl],
playing: false,
processingState: AudioProcessingState.ready);
FlutterRadio.pause(url: streamUrl);
}
@override
Future<void> onStop() async {
await FlutterRadio.stop();
exit(0);
await super.onStop();
await AudioServiceBackground.setState(
controls: [],
playing: false,
processingState: AudioProcessingState.stopped);
}
@override
Future onCustomAction(_function, params) {
AudioServiceBackground.setMediaItem(MediaItem(
id: params['mediaID'],
album: params['mediaAlbum'],
title: params['mediaTitle'],
artUri: params['mediaCover']));
}
}
我的完整应用程序可以查看:https ://github.com/yagoliveira92/radio-basic/tree/develop/
解决方案
响应:我initPlaying()
在几秒钟后将其放入屏幕中。把这个方法放在main()
解决问题上。
推荐阅读
- javascript - onclick="$('#id').toggle()" 不起作用,需要为 Chrome 旧版本重写
- java - 是否存在在没有 GC 的情况下使用的堆内存减少的情况,即没有 GC 事件的情况?
- php - 何时使用 MailChimp 单一或批量操作?
- java - 构造函数中带有@Value的FactoryBean?
- java - How to save path drawn on canvas as png
- mysql - mySQL:如何编写满足两个或多个条件的查询
- docker - Docker Swarm 错误响应
- javascript - 流体图像根据屏幕尺寸调整尺寸
- java - 多个 Jasper 使用键报告页码处理程序
- android - The app does not open on sauce labs cloud