首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >audio_service flutter软件包无法启动

audio_service flutter软件包无法启动
EN

Stack Overflow用户
提问于 2020-10-26 12:55:16
回答 2查看 1.5K关注 0票数 2

我正在尝试使用audio_service包来允许对我的播客播放应用程序进行后台控制。服务未启动。当我调用AudioService.start()时,什么也没有返回(我正在await这个函数,并试图在这个函数返回后打印一条语句,但它再也没有返回。此外,当我第一次尝试播放一个项目时,它会正确地将AudioService.running求值为false,然后尝试启动AudioService (挂起start()函数)。当我再次点击play时,它会将AudioService.running求值为true (即使start函数从未返回),然后抛出以下错误:

代码语言:javascript
运行
复制
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函数的代码:

代码语言:javascript
运行
复制
    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');
      }
    }

后台任务入口点的代码(它在任何其他类的外部,因为它不能在我在另一个问题中读到的类中工作,它必须是顶级的):

代码语言:javascript
运行
复制
_backgroundTaskEntrypoint() {
  AudioServiceBackground.run(() => PlayerTask());
}

最后,我的BackgroundAudioTask中的onStart中似乎没有任何代码正在运行(因为我的onStart顶部的打印语句没有运行)。所以我不知道这是怎么回事。它没有给我一个明确错误,也没有给我任何关于从哪里开始调试audio_service的提示。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-27 02:16:43

在启动服务之前调用AudioService.connect();可以解决这个错误。

票数 1
EN

Stack Overflow用户

发布于 2021-04-02 00:23:28

对我来说,AudioService.start()将会冻结,直到我根据audio_service自述文件将WAKE_LOCKFOREGROUND_SERVICE权限添加到AndroidManifest.xml文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64531709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档