flutter - audio_service 颤振包未启动
问题描述
我正在尝试使用 audio_service 包来允许我的播客播放应用程序进行后台控制。服务未启动。当我调用时AudioService.start()
,什么都没有返回(我正在await
使用这个函数并试图在它返回之后打印一条语句,但它永远不会返回。另外,当我第一次尝试播放一个项目时,它会正确评估AudioService.running
为 false 然后尝试启动 AudioService(挂在start()
函数上)。当我第二次点击播放时,它将评估AudioService.running
为 true(即使启动函数从未返回),然后会抛出此错误:
E/flutter ( 8726): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: PlatformException(Attempt to invoke virtual method 'void io.flutter.plugin.common.MethodChannel.invokeMethod(java.lang.String, java.lang.Object, io.flutter.plugin.common.MethodChannel$Result)' on a null object reference, null, null)
E/flutter ( 8726): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:572:7)
E/flutter ( 8726): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:161:18)
E/flutter ( 8726): <asynchronous suspension>
E/flutter ( 8726): #2 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:334:12)
E/flutter ( 8726): #3 AudioService.play (package:audio_service/audio_service.dart:895:20)
这是我调用 start 函数的代码:
if(AudioService.running) {
print('playing audio service: ${AudioService.running}');
AudioService.play();
} else {
MediaItem mediaItem = MediaItem(
id: newPostPod.audioUrl,
title: newPostPod.titleTextString(),
artist: newPostPod.subtitleTextString(),
);
print('starting audio service');
bool started = await AudioService.start(
backgroundTaskEntrypoint: _backgroundTaskEntrypoint,
params: {'mediaItem': mediaItem.toJson()},
);
print('audio service started');
if(AudioService.running) {
print('starting to play via media service');
AudioService.playMediaItem(mediaItem);
} else {
print('Audio Service not yet started: $started');
}
}
后台任务入口点的代码(它在任何其他类之外,因为它不在我在另一个问题中读到的必须是顶级的类中工作):
_backgroundTaskEntrypoint() {
AudioServiceBackground.run(() => PlayerTask());
}
最后,onStart
我的 BackgroundAudioTask 中的任何代码都没有运行(因为我的 onStart 顶部的打印语句没有运行)。所以我不确定这里发生了什么。它没有给我一个明确的错误,也没有真正提示从哪里开始调试 audio_service。
解决方案
AudioService.connect();
在启动服务之前调用将解决错误。
推荐阅读
- spring-boot - 在 Spring 中消费 Kafka 消息
- git - 如何在 VisualStudio 2012 中连接到 git repo?
- css - 导航栏折叠后的菜单边距 Bootstrap 4
- javascript - 有没有办法使用纯 JavaScript 而没有 HTML/CSS 来设置 p5js 滑块的样式?
- java - 我想刷新我的 Java 框架!(制作时钟程序)
- html - 在 Excel VBA 中使用 WinHTTPRequest 访问网站的表格
- clang - -FreeBSD 10.x 上 cc 的管道标志
- javascript - javascript视频标签控制缓冲
- c# - 管理员和用户登录 C#
- batch-file - 使用批处理文件删除特定的行号